{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Exploratury Data Analysis\n",
    "By Minaduki 2019.    \n",
    "项目的Git存储库：https://git.nju.edu.cn/Minaduki/datascience     \n",
    "本作业数据来源自：https://github.com/cmawer/pycon-2017-eda-tutorial       \n",
    "This is a EDA using the Food and Agriculture Organization(FAO) of the United Nation's AQUASTAT dataset.    \n",
    "The data used can be found [here](http://www.fao.org/nr/water/aquastat/data/query/index.html).      "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import pandas as pd\n",
    "import seaborn as sns\n",
    "import matplotlib.pyplot as plt\n",
    "from scipy import stats\n",
    "import math\n",
    "import statistics\n",
    "import random"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 数据导入\n",
    "首先，从下载好的gunzip文件中导入数据，pandas支持通过指定压缩方式直接读取压缩文件内的数据表。   \n",
    "读取完毕后先打印出对数据的一些总结，如下所示："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'pandas.core.frame.DataFrame'>\n",
      "RangeIndex: 143280 entries, 0 to 143279\n",
      "Data columns (total 7 columns):\n",
      "country          143280 non-null object\n",
      "region           143280 non-null object\n",
      "variable         143280 non-null object\n",
      "variable_full    143280 non-null object\n",
      "time_period      143280 non-null object\n",
      "year_measured    96411 non-null float64\n",
      "value            96411 non-null float64\n",
      "dtypes: float64(2), object(5)\n",
      "memory usage: 4.9+ MB\n",
      "None\n"
     ]
    }
   ],
   "source": [
    "data = pd.read_csv('aquastat.csv.gzip', compression='gzip')\n",
    "print(data.info())"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "可以看见，数据表总共有14万个项目，分为7栏，其中统计年份与统计值为数值。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "打印出数据表的前十行，看一看数据表的样子："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>country</th>\n",
       "      <th>region</th>\n",
       "      <th>variable</th>\n",
       "      <th>variable_full</th>\n",
       "      <th>time_period</th>\n",
       "      <th>year_measured</th>\n",
       "      <th>value</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <td>0</td>\n",
       "      <td>Afghanistan</td>\n",
       "      <td>World | Asia</td>\n",
       "      <td>total_area</td>\n",
       "      <td>Total area of the country (1000 ha)</td>\n",
       "      <td>1958-1962</td>\n",
       "      <td>1962.0</td>\n",
       "      <td>65286.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>1</td>\n",
       "      <td>Afghanistan</td>\n",
       "      <td>World | Asia</td>\n",
       "      <td>total_area</td>\n",
       "      <td>Total area of the country (1000 ha)</td>\n",
       "      <td>1963-1967</td>\n",
       "      <td>1967.0</td>\n",
       "      <td>65286.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>2</td>\n",
       "      <td>Afghanistan</td>\n",
       "      <td>World | Asia</td>\n",
       "      <td>total_area</td>\n",
       "      <td>Total area of the country (1000 ha)</td>\n",
       "      <td>1968-1972</td>\n",
       "      <td>1972.0</td>\n",
       "      <td>65286.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>3</td>\n",
       "      <td>Afghanistan</td>\n",
       "      <td>World | Asia</td>\n",
       "      <td>total_area</td>\n",
       "      <td>Total area of the country (1000 ha)</td>\n",
       "      <td>1973-1977</td>\n",
       "      <td>1977.0</td>\n",
       "      <td>65286.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>4</td>\n",
       "      <td>Afghanistan</td>\n",
       "      <td>World | Asia</td>\n",
       "      <td>total_area</td>\n",
       "      <td>Total area of the country (1000 ha)</td>\n",
       "      <td>1978-1982</td>\n",
       "      <td>1982.0</td>\n",
       "      <td>65286.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>5</td>\n",
       "      <td>Afghanistan</td>\n",
       "      <td>World | Asia</td>\n",
       "      <td>total_area</td>\n",
       "      <td>Total area of the country (1000 ha)</td>\n",
       "      <td>1983-1987</td>\n",
       "      <td>1987.0</td>\n",
       "      <td>65286.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>6</td>\n",
       "      <td>Afghanistan</td>\n",
       "      <td>World | Asia</td>\n",
       "      <td>total_area</td>\n",
       "      <td>Total area of the country (1000 ha)</td>\n",
       "      <td>1988-1992</td>\n",
       "      <td>1992.0</td>\n",
       "      <td>65286.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>7</td>\n",
       "      <td>Afghanistan</td>\n",
       "      <td>World | Asia</td>\n",
       "      <td>total_area</td>\n",
       "      <td>Total area of the country (1000 ha)</td>\n",
       "      <td>1993-1997</td>\n",
       "      <td>1997.0</td>\n",
       "      <td>65286.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>8</td>\n",
       "      <td>Afghanistan</td>\n",
       "      <td>World | Asia</td>\n",
       "      <td>total_area</td>\n",
       "      <td>Total area of the country (1000 ha)</td>\n",
       "      <td>1998-2002</td>\n",
       "      <td>2002.0</td>\n",
       "      <td>65286.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>9</td>\n",
       "      <td>Afghanistan</td>\n",
       "      <td>World | Asia</td>\n",
       "      <td>total_area</td>\n",
       "      <td>Total area of the country (1000 ha)</td>\n",
       "      <td>2003-2007</td>\n",
       "      <td>2007.0</td>\n",
       "      <td>65286.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "       country        region    variable                        variable_full  \\\n",
       "0  Afghanistan  World | Asia  total_area  Total area of the country (1000 ha)   \n",
       "1  Afghanistan  World | Asia  total_area  Total area of the country (1000 ha)   \n",
       "2  Afghanistan  World | Asia  total_area  Total area of the country (1000 ha)   \n",
       "3  Afghanistan  World | Asia  total_area  Total area of the country (1000 ha)   \n",
       "4  Afghanistan  World | Asia  total_area  Total area of the country (1000 ha)   \n",
       "5  Afghanistan  World | Asia  total_area  Total area of the country (1000 ha)   \n",
       "6  Afghanistan  World | Asia  total_area  Total area of the country (1000 ha)   \n",
       "7  Afghanistan  World | Asia  total_area  Total area of the country (1000 ha)   \n",
       "8  Afghanistan  World | Asia  total_area  Total area of the country (1000 ha)   \n",
       "9  Afghanistan  World | Asia  total_area  Total area of the country (1000 ha)   \n",
       "\n",
       "  time_period  year_measured    value  \n",
       "0   1958-1962         1962.0  65286.0  \n",
       "1   1963-1967         1967.0  65286.0  \n",
       "2   1968-1972         1972.0  65286.0  \n",
       "3   1973-1977         1977.0  65286.0  \n",
       "4   1978-1982         1982.0  65286.0  \n",
       "5   1983-1987         1987.0  65286.0  \n",
       "6   1988-1992         1992.0  65286.0  \n",
       "7   1993-1997         1997.0  65286.0  \n",
       "8   1998-2002         2002.0  65286.0  \n",
       "9   2003-2007         2007.0  65286.0  "
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data.head(10)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 初步特征分析\n",
    "首先，我们可以从数据中总结一些显而易见的内容，比如说数据总共包含了多少国家/地区："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "There are 199 countires/regions in total.\n"
     ]
    }
   ],
   "source": [
    "countries = data.country.unique()\n",
    "# print(countries)\n",
    "print('There are %d countires/regions in total.' %data.country.nunique())"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "对于每个国家/地区，总共有多少个统计时间区间："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "['1958-1962' '1963-1967' '1968-1972' '1973-1977' '1978-1982' '1983-1987'\n",
      " '1988-1992' '1993-1997' '1998-2002' '2003-2007' '2008-2012' '2013-2017']\n",
      "There are 12 time periods in total.\n"
     ]
    }
   ],
   "source": [
    "time_periods = data.time_period.unique()\n",
    "print(time_periods)\n",
    "print('There are %d time periods in total.' %data.time_period.nunique())"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "另外，我们还能从表格中的variable得到总共有哪些方面的统计数据："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>variable</th>\n",
       "      <th>variable_full</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <td>0</td>\n",
       "      <td>total_area</td>\n",
       "      <td>Total area of the country (1000 ha)</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>576</td>\n",
       "      <td>arable_land</td>\n",
       "      <td>Arable land area (1000 ha)</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>1152</td>\n",
       "      <td>permanent_crop_area</td>\n",
       "      <td>Permanent crops area (1000 ha)</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>1728</td>\n",
       "      <td>cultivated_area</td>\n",
       "      <td>Cultivated area (arable land + permanent crops...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>2304</td>\n",
       "      <td>percent_cultivated</td>\n",
       "      <td>% of total country area cultivated (%)</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>2880</td>\n",
       "      <td>total_pop</td>\n",
       "      <td>Total population (1000 inhab)</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>3456</td>\n",
       "      <td>rural_pop</td>\n",
       "      <td>Rural population (1000 inhab)</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>4032</td>\n",
       "      <td>urban_pop</td>\n",
       "      <td>Urban population (1000 inhab)</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>4608</td>\n",
       "      <td>gdp</td>\n",
       "      <td>Gross Domestic Product (GDP) (current US$)</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>5184</td>\n",
       "      <td>gdp_per_capita</td>\n",
       "      <td>GDP per capita (current US$/inhab)</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>5760</td>\n",
       "      <td>agg_to_gdp</td>\n",
       "      <td>Agriculture, value added to GDP (%)</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>6336</td>\n",
       "      <td>human_dev_index</td>\n",
       "      <td>Human Development Index (HDI) [highest = 1] (-)</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>6912</td>\n",
       "      <td>gender_inequal_index</td>\n",
       "      <td>Gender Inequality Index (GII) [equality = 0; i...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>7488</td>\n",
       "      <td>percent_undernourished</td>\n",
       "      <td>Prevalence of undernourishment (3-year average...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>8064</td>\n",
       "      <td>number_undernourished</td>\n",
       "      <td>Number of people undernourished (3-year averag...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>8640</td>\n",
       "      <td>avg_annual_rain_depth</td>\n",
       "      <td>Long-term average annual precipitation in dept...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>9216</td>\n",
       "      <td>avg_annual_rain_vol</td>\n",
       "      <td>Long-term average annual precipitation in volu...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>9792</td>\n",
       "      <td>national_rainfall_index</td>\n",
       "      <td>National Rainfall Index (NRI) (mm/year)</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>10368</td>\n",
       "      <td>surface_water_produced</td>\n",
       "      <td>Surface water produced internally (10^9 m3/year)</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>10944</td>\n",
       "      <td>groundwater_produced</td>\n",
       "      <td>Groundwater produced internally (10^9 m3/year)</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>11520</td>\n",
       "      <td>surface_groundwater_overlap</td>\n",
       "      <td>Overlap between surface water and groundwater ...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>12096</td>\n",
       "      <td>irwr</td>\n",
       "      <td>Total internal renewable water resources (IRWR...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>12672</td>\n",
       "      <td>irwr_per_capita</td>\n",
       "      <td>Total internal renewable water resources per c...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>13248</td>\n",
       "      <td>surface_entering</td>\n",
       "      <td>Surface water: entering the country (total) (1...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>13824</td>\n",
       "      <td>surface_inflow_submit_no_treaty</td>\n",
       "      <td>Surface water: inflow not submitted to treatie...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>14400</td>\n",
       "      <td>surface_inflow_submit_treaty</td>\n",
       "      <td>Surface water: inflow submitted to treaties (1...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>14976</td>\n",
       "      <td>surface_inflow_secure_treaty</td>\n",
       "      <td>Surface water: inflow secured through treaties...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>15552</td>\n",
       "      <td>total_flow_border_rivers</td>\n",
       "      <td>Surface water: total flow of border rivers (10...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>16128</td>\n",
       "      <td>accounted_flow_border_rivers</td>\n",
       "      <td>Surface water: accounted flow of border rivers...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>16704</td>\n",
       "      <td>accounted_flow</td>\n",
       "      <td>Surface water: accounted inflow (10^9 m3/year)</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>17280</td>\n",
       "      <td>surface_to_other_countries</td>\n",
       "      <td>Surface water: leaving the country to other co...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>17856</td>\n",
       "      <td>surface_outflow_submit_no_treaty</td>\n",
       "      <td>Surface water: outflow to other countries not ...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>18432</td>\n",
       "      <td>surface_outflow_submit_treaty</td>\n",
       "      <td>Surface water: outflow to other countries subm...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>19008</td>\n",
       "      <td>surface_outflow_secure_treaty</td>\n",
       "      <td>Surface water: outflow to other countries secu...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>19584</td>\n",
       "      <td>surface_total_external_renewable</td>\n",
       "      <td>Surface water: total external renewable (10^9 ...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>20160</td>\n",
       "      <td>groundwater_entering</td>\n",
       "      <td>Groundwater: entering the country (total) (10^...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>20736</td>\n",
       "      <td>groundwater_accounted_inflow</td>\n",
       "      <td>Groundwater: accounted inflow (10^9 m3/year)</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>21312</td>\n",
       "      <td>groundwater_to_other_countries</td>\n",
       "      <td>Groundwater: leaving the country to other coun...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>21888</td>\n",
       "      <td>groundwater_accounted_outflow</td>\n",
       "      <td>Groundwater: accounted outflow to other countr...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>22464</td>\n",
       "      <td>water_total_external_renewable</td>\n",
       "      <td>Water resources: total external renewable (10^...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>23040</td>\n",
       "      <td>total_renewable_surface</td>\n",
       "      <td>Total renewable surface water (10^9 m3/year)</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>23616</td>\n",
       "      <td>total_renewable_groundwater</td>\n",
       "      <td>Total renewable groundwater (10^9 m3/year)</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>24192</td>\n",
       "      <td>overlap_surface_groundwater</td>\n",
       "      <td>Overlap: between surface water and groundwater...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>24768</td>\n",
       "      <td>total_renewable</td>\n",
       "      <td>Total renewable water resources (10^9 m3/year)</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>25344</td>\n",
       "      <td>dependency_ratio</td>\n",
       "      <td>Dependency ratio (%)</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>25920</td>\n",
       "      <td>total_renewable_per_capita</td>\n",
       "      <td>Total renewable water resources per capita (m3...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>26496</td>\n",
       "      <td>exploitable_regular_renewable_surface</td>\n",
       "      <td>Exploitable: regular renewable surface water (...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>27072</td>\n",
       "      <td>exploitable_irregular_renewable_surface</td>\n",
       "      <td>Exploitable: irregular renewable surface water...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>27648</td>\n",
       "      <td>exploitable_total_renewable_surface</td>\n",
       "      <td>Exploitable: total renewable surface water (10...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>28224</td>\n",
       "      <td>exploitable_regular_renewable_groundwater</td>\n",
       "      <td>Exploitable: regular renewable groundwater (10...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>28800</td>\n",
       "      <td>exploitable_total</td>\n",
       "      <td>Total exploitable water resources (10^9 m3/year)</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>29376</td>\n",
       "      <td>interannual_variability</td>\n",
       "      <td>Interannual variability (WRI) (-)</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>29952</td>\n",
       "      <td>seasonal_variability</td>\n",
       "      <td>Seasonal variability (WRI) (-)</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>30528</td>\n",
       "      <td>total_dam_capacity</td>\n",
       "      <td>Total dam capacity (km3)</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>31104</td>\n",
       "      <td>dam_capacity_per_capita</td>\n",
       "      <td>Dam capacity per capita (m3/inhab)</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>31680</td>\n",
       "      <td>irrigation_potential</td>\n",
       "      <td>Irrigation potential (1000 ha)</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>32256</td>\n",
       "      <td>flood_occurence</td>\n",
       "      <td>Flood occurrence (WRI) (-)</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>32832</td>\n",
       "      <td>total_pop_access_drinking</td>\n",
       "      <td>Total population with access to safe drinking-...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>33408</td>\n",
       "      <td>rural_pop_access_drinking</td>\n",
       "      <td>Rural population with access to safe drinking-...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>33984</td>\n",
       "      <td>urban_pop_access_drinking</td>\n",
       "      <td>Urban population with access to safe drinking-...</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                                        variable  \\\n",
       "0                                     total_area   \n",
       "576                                  arable_land   \n",
       "1152                         permanent_crop_area   \n",
       "1728                             cultivated_area   \n",
       "2304                          percent_cultivated   \n",
       "2880                                   total_pop   \n",
       "3456                                   rural_pop   \n",
       "4032                                   urban_pop   \n",
       "4608                                         gdp   \n",
       "5184                              gdp_per_capita   \n",
       "5760                                  agg_to_gdp   \n",
       "6336                             human_dev_index   \n",
       "6912                        gender_inequal_index   \n",
       "7488                      percent_undernourished   \n",
       "8064                       number_undernourished   \n",
       "8640                       avg_annual_rain_depth   \n",
       "9216                         avg_annual_rain_vol   \n",
       "9792                     national_rainfall_index   \n",
       "10368                     surface_water_produced   \n",
       "10944                       groundwater_produced   \n",
       "11520                surface_groundwater_overlap   \n",
       "12096                                       irwr   \n",
       "12672                            irwr_per_capita   \n",
       "13248                           surface_entering   \n",
       "13824            surface_inflow_submit_no_treaty   \n",
       "14400               surface_inflow_submit_treaty   \n",
       "14976               surface_inflow_secure_treaty   \n",
       "15552                   total_flow_border_rivers   \n",
       "16128               accounted_flow_border_rivers   \n",
       "16704                             accounted_flow   \n",
       "17280                 surface_to_other_countries   \n",
       "17856           surface_outflow_submit_no_treaty   \n",
       "18432              surface_outflow_submit_treaty   \n",
       "19008              surface_outflow_secure_treaty   \n",
       "19584           surface_total_external_renewable   \n",
       "20160                       groundwater_entering   \n",
       "20736               groundwater_accounted_inflow   \n",
       "21312             groundwater_to_other_countries   \n",
       "21888              groundwater_accounted_outflow   \n",
       "22464             water_total_external_renewable   \n",
       "23040                    total_renewable_surface   \n",
       "23616                total_renewable_groundwater   \n",
       "24192                overlap_surface_groundwater   \n",
       "24768                            total_renewable   \n",
       "25344                           dependency_ratio   \n",
       "25920                 total_renewable_per_capita   \n",
       "26496      exploitable_regular_renewable_surface   \n",
       "27072    exploitable_irregular_renewable_surface   \n",
       "27648        exploitable_total_renewable_surface   \n",
       "28224  exploitable_regular_renewable_groundwater   \n",
       "28800                          exploitable_total   \n",
       "29376                    interannual_variability   \n",
       "29952                       seasonal_variability   \n",
       "30528                         total_dam_capacity   \n",
       "31104                    dam_capacity_per_capita   \n",
       "31680                       irrigation_potential   \n",
       "32256                            flood_occurence   \n",
       "32832                  total_pop_access_drinking   \n",
       "33408                  rural_pop_access_drinking   \n",
       "33984                  urban_pop_access_drinking   \n",
       "\n",
       "                                           variable_full  \n",
       "0                    Total area of the country (1000 ha)  \n",
       "576                           Arable land area (1000 ha)  \n",
       "1152                      Permanent crops area (1000 ha)  \n",
       "1728   Cultivated area (arable land + permanent crops...  \n",
       "2304              % of total country area cultivated (%)  \n",
       "2880                       Total population (1000 inhab)  \n",
       "3456                       Rural population (1000 inhab)  \n",
       "4032                       Urban population (1000 inhab)  \n",
       "4608          Gross Domestic Product (GDP) (current US$)  \n",
       "5184                  GDP per capita (current US$/inhab)  \n",
       "5760                 Agriculture, value added to GDP (%)  \n",
       "6336     Human Development Index (HDI) [highest = 1] (-)  \n",
       "6912   Gender Inequality Index (GII) [equality = 0; i...  \n",
       "7488   Prevalence of undernourishment (3-year average...  \n",
       "8064   Number of people undernourished (3-year averag...  \n",
       "8640   Long-term average annual precipitation in dept...  \n",
       "9216   Long-term average annual precipitation in volu...  \n",
       "9792             National Rainfall Index (NRI) (mm/year)  \n",
       "10368   Surface water produced internally (10^9 m3/year)  \n",
       "10944     Groundwater produced internally (10^9 m3/year)  \n",
       "11520  Overlap between surface water and groundwater ...  \n",
       "12096  Total internal renewable water resources (IRWR...  \n",
       "12672  Total internal renewable water resources per c...  \n",
       "13248  Surface water: entering the country (total) (1...  \n",
       "13824  Surface water: inflow not submitted to treatie...  \n",
       "14400  Surface water: inflow submitted to treaties (1...  \n",
       "14976  Surface water: inflow secured through treaties...  \n",
       "15552  Surface water: total flow of border rivers (10...  \n",
       "16128  Surface water: accounted flow of border rivers...  \n",
       "16704     Surface water: accounted inflow (10^9 m3/year)  \n",
       "17280  Surface water: leaving the country to other co...  \n",
       "17856  Surface water: outflow to other countries not ...  \n",
       "18432  Surface water: outflow to other countries subm...  \n",
       "19008  Surface water: outflow to other countries secu...  \n",
       "19584  Surface water: total external renewable (10^9 ...  \n",
       "20160  Groundwater: entering the country (total) (10^...  \n",
       "20736       Groundwater: accounted inflow (10^9 m3/year)  \n",
       "21312  Groundwater: leaving the country to other coun...  \n",
       "21888  Groundwater: accounted outflow to other countr...  \n",
       "22464  Water resources: total external renewable (10^...  \n",
       "23040       Total renewable surface water (10^9 m3/year)  \n",
       "23616         Total renewable groundwater (10^9 m3/year)  \n",
       "24192  Overlap: between surface water and groundwater...  \n",
       "24768     Total renewable water resources (10^9 m3/year)  \n",
       "25344                               Dependency ratio (%)  \n",
       "25920  Total renewable water resources per capita (m3...  \n",
       "26496  Exploitable: regular renewable surface water (...  \n",
       "27072  Exploitable: irregular renewable surface water...  \n",
       "27648  Exploitable: total renewable surface water (10...  \n",
       "28224  Exploitable: regular renewable groundwater (10...  \n",
       "28800   Total exploitable water resources (10^9 m3/year)  \n",
       "29376                  Interannual variability (WRI) (-)  \n",
       "29952                     Seasonal variability (WRI) (-)  \n",
       "30528                           Total dam capacity (km3)  \n",
       "31104                 Dam capacity per capita (m3/inhab)  \n",
       "31680                     Irrigation potential (1000 ha)  \n",
       "32256                         Flood occurrence (WRI) (-)  \n",
       "32832  Total population with access to safe drinking-...  \n",
       "33408  Rural population with access to safe drinking-...  \n",
       "33984  Urban population with access to safe drinking-...  "
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data[['variable','variable_full']].drop_duplicates()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 数据缺失值与处理\n",
    "缺失值会影响到后续的分析，需要对其缺失值进去处理，丢弃或者替代。   \n",
    "首先，查看总共有几处数据值是空缺的："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "46869"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data.value.isnull().sum()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "有46869处缺失，为了方便起见都删掉吧，反正数据总量不小，使用dropna命令删掉对应的项目"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'pandas.core.frame.DataFrame'>\n",
      "Int64Index: 96411 entries, 0 to 143279\n",
      "Data columns (total 7 columns):\n",
      "country          96411 non-null object\n",
      "region           96411 non-null object\n",
      "variable         96411 non-null object\n",
      "variable_full    96411 non-null object\n",
      "time_period      96411 non-null object\n",
      "year_measured    96411 non-null float64\n",
      "value            96411 non-null float64\n",
      "dtypes: float64(2), object(5)\n",
      "memory usage: 4.0+ MB\n"
     ]
    }
   ],
   "source": [
    "my_data = data.dropna(axis=0)\n",
    "my_data.info()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "可以看出，现在的数据表格就没有空项目了。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 冗余判断\n",
    "数据冗余分为行冗余及列冗余，行冗余表现为重复样本，列冗余表现为一些特征之间具有简单的线性关系。    \n",
    "首先看看是否存在行冗余："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0         False\n",
       "1         False\n",
       "2         False\n",
       "3         False\n",
       "4         False\n",
       "          ...  \n",
       "143275    False\n",
       "143276    False\n",
       "143277    False\n",
       "143278    False\n",
       "143279    False\n",
       "Length: 96411, dtype: bool"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "my_data.duplicated()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "看来没有。    \n",
    "列冗余由于就一列数据，也肯定没有。    \n",
    "如果强行要说的话，variable字段和variable_full字段相当与简称和全程，可以省略一个，但是意义不大，这里就不删去了。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 数据划分\n",
    "可以看出，所给的数据其实来源于多个统计项目，因此要把不同的统计项目切分出来，方便数据处理。    \n",
    "这里使用一个自定义的函数完成对不同统计项目的slicing，实现如下："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [],
   "source": [
    "def slice_by_variable(dataframe, variable):\n",
    "    dataframe = dataframe[dataframe.variable==variable]\n",
    "    dataframe = dataframe.pivot(index='country', columns='time_period', values='value')\n",
    "    return dataframe"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "把gdp统计切出来看看（顺便一提，为了保持表格美观，所有有缺失的国家都被drop了）："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th>time_period</th>\n",
       "      <th>1958-1962</th>\n",
       "      <th>1963-1967</th>\n",
       "      <th>1968-1972</th>\n",
       "      <th>1973-1977</th>\n",
       "      <th>1978-1982</th>\n",
       "      <th>1983-1987</th>\n",
       "      <th>1988-1992</th>\n",
       "      <th>1993-1997</th>\n",
       "      <th>1998-2002</th>\n",
       "      <th>2003-2007</th>\n",
       "      <th>2008-2012</th>\n",
       "      <th>2013-2017</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>country</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <td>Algeria</td>\n",
       "      <td>2.001461e+09</td>\n",
       "      <td>3.370870e+09</td>\n",
       "      <td>6.761786e+09</td>\n",
       "      <td>2.097190e+10</td>\n",
       "      <td>4.520709e+10</td>\n",
       "      <td>6.674227e+10</td>\n",
       "      <td>4.800330e+10</td>\n",
       "      <td>4.817786e+10</td>\n",
       "      <td>5.676029e+10</td>\n",
       "      <td>1.350000e+11</td>\n",
       "      <td>2.090000e+11</td>\n",
       "      <td>1.670000e+11</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>Argentina</td>\n",
       "      <td>2.445060e+10</td>\n",
       "      <td>2.425667e+10</td>\n",
       "      <td>3.473300e+10</td>\n",
       "      <td>5.678100e+10</td>\n",
       "      <td>8.430749e+10</td>\n",
       "      <td>1.110000e+11</td>\n",
       "      <td>2.290000e+11</td>\n",
       "      <td>2.930000e+11</td>\n",
       "      <td>9.772451e+10</td>\n",
       "      <td>3.290000e+11</td>\n",
       "      <td>6.040000e+11</td>\n",
       "      <td>5.480000e+11</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>Australia</td>\n",
       "      <td>1.988353e+10</td>\n",
       "      <td>3.037854e+10</td>\n",
       "      <td>5.192874e+10</td>\n",
       "      <td>1.100000e+11</td>\n",
       "      <td>1.940000e+11</td>\n",
       "      <td>1.890000e+11</td>\n",
       "      <td>3.250000e+11</td>\n",
       "      <td>4.360000e+11</td>\n",
       "      <td>3.940000e+11</td>\n",
       "      <td>8.530000e+11</td>\n",
       "      <td>1.540000e+12</td>\n",
       "      <td>1.340000e+12</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>Austria</td>\n",
       "      <td>7.756110e+09</td>\n",
       "      <td>1.157943e+10</td>\n",
       "      <td>2.200647e+10</td>\n",
       "      <td>5.142159e+10</td>\n",
       "      <td>7.110359e+10</td>\n",
       "      <td>1.240000e+11</td>\n",
       "      <td>1.950000e+11</td>\n",
       "      <td>2.120000e+11</td>\n",
       "      <td>2.130000e+11</td>\n",
       "      <td>3.860000e+11</td>\n",
       "      <td>4.070000e+11</td>\n",
       "      <td>3.740000e+11</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>Bahamas</td>\n",
       "      <td>2.122528e+08</td>\n",
       "      <td>3.901961e+08</td>\n",
       "      <td>5.909000e+08</td>\n",
       "      <td>7.130000e+08</td>\n",
       "      <td>1.578300e+09</td>\n",
       "      <td>2.714000e+09</td>\n",
       "      <td>3.109000e+09</td>\n",
       "      <td>4.961119e+09</td>\n",
       "      <td>6.957996e+09</td>\n",
       "      <td>8.318996e+09</td>\n",
       "      <td>8.234470e+09</td>\n",
       "      <td>8.884441e+09</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>Bangladesh</td>\n",
       "      <td>5.081413e+09</td>\n",
       "      <td>7.253575e+09</td>\n",
       "      <td>6.288246e+09</td>\n",
       "      <td>9.651149e+09</td>\n",
       "      <td>1.852540e+10</td>\n",
       "      <td>2.429803e+10</td>\n",
       "      <td>3.170887e+10</td>\n",
       "      <td>4.824431e+10</td>\n",
       "      <td>5.472408e+10</td>\n",
       "      <td>7.961189e+10</td>\n",
       "      <td>1.330000e+11</td>\n",
       "      <td>1.950000e+11</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>Barbados</td>\n",
       "      <td>9.694976e+07</td>\n",
       "      <td>1.371037e+08</td>\n",
       "      <td>2.333836e+08</td>\n",
       "      <td>4.951166e+08</td>\n",
       "      <td>1.163924e+09</td>\n",
       "      <td>1.704370e+09</td>\n",
       "      <td>1.957000e+09</td>\n",
       "      <td>2.549097e+09</td>\n",
       "      <td>3.169500e+09</td>\n",
       "      <td>4.546000e+09</td>\n",
       "      <td>4.313000e+09</td>\n",
       "      <td>4.451000e+09</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>Belgium</td>\n",
       "      <td>1.326402e+10</td>\n",
       "      <td>1.999204e+10</td>\n",
       "      <td>3.740863e+10</td>\n",
       "      <td>8.328341e+10</td>\n",
       "      <td>9.258898e+10</td>\n",
       "      <td>1.500000e+11</td>\n",
       "      <td>2.360000e+11</td>\n",
       "      <td>2.550000e+11</td>\n",
       "      <td>2.590000e+11</td>\n",
       "      <td>4.720000e+11</td>\n",
       "      <td>4.980000e+11</td>\n",
       "      <td>4.540000e+11</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>Belize</td>\n",
       "      <td>3.185759e+07</td>\n",
       "      <td>4.737931e+07</td>\n",
       "      <td>6.606250e+07</td>\n",
       "      <td>1.176500e+08</td>\n",
       "      <td>1.792500e+08</td>\n",
       "      <td>2.765500e+08</td>\n",
       "      <td>5.182391e+08</td>\n",
       "      <td>6.543144e+08</td>\n",
       "      <td>9.325518e+08</td>\n",
       "      <td>1.290543e+09</td>\n",
       "      <td>1.573619e+09</td>\n",
       "      <td>1.763000e+09</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>Benin</td>\n",
       "      <td>2.364350e+08</td>\n",
       "      <td>3.062220e+08</td>\n",
       "      <td>4.103319e+08</td>\n",
       "      <td>7.500498e+08</td>\n",
       "      <td>1.267779e+09</td>\n",
       "      <td>1.562412e+09</td>\n",
       "      <td>1.695315e+09</td>\n",
       "      <td>2.268302e+09</td>\n",
       "      <td>3.054571e+09</td>\n",
       "      <td>5.969535e+09</td>\n",
       "      <td>8.117101e+09</td>\n",
       "      <td>8.476125e+09</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "time_period     1958-1962     1963-1967     1968-1972     1973-1977  \\\n",
       "country                                                               \n",
       "Algeria      2.001461e+09  3.370870e+09  6.761786e+09  2.097190e+10   \n",
       "Argentina    2.445060e+10  2.425667e+10  3.473300e+10  5.678100e+10   \n",
       "Australia    1.988353e+10  3.037854e+10  5.192874e+10  1.100000e+11   \n",
       "Austria      7.756110e+09  1.157943e+10  2.200647e+10  5.142159e+10   \n",
       "Bahamas      2.122528e+08  3.901961e+08  5.909000e+08  7.130000e+08   \n",
       "Bangladesh   5.081413e+09  7.253575e+09  6.288246e+09  9.651149e+09   \n",
       "Barbados     9.694976e+07  1.371037e+08  2.333836e+08  4.951166e+08   \n",
       "Belgium      1.326402e+10  1.999204e+10  3.740863e+10  8.328341e+10   \n",
       "Belize       3.185759e+07  4.737931e+07  6.606250e+07  1.176500e+08   \n",
       "Benin        2.364350e+08  3.062220e+08  4.103319e+08  7.500498e+08   \n",
       "\n",
       "time_period     1978-1982     1983-1987     1988-1992     1993-1997  \\\n",
       "country                                                               \n",
       "Algeria      4.520709e+10  6.674227e+10  4.800330e+10  4.817786e+10   \n",
       "Argentina    8.430749e+10  1.110000e+11  2.290000e+11  2.930000e+11   \n",
       "Australia    1.940000e+11  1.890000e+11  3.250000e+11  4.360000e+11   \n",
       "Austria      7.110359e+10  1.240000e+11  1.950000e+11  2.120000e+11   \n",
       "Bahamas      1.578300e+09  2.714000e+09  3.109000e+09  4.961119e+09   \n",
       "Bangladesh   1.852540e+10  2.429803e+10  3.170887e+10  4.824431e+10   \n",
       "Barbados     1.163924e+09  1.704370e+09  1.957000e+09  2.549097e+09   \n",
       "Belgium      9.258898e+10  1.500000e+11  2.360000e+11  2.550000e+11   \n",
       "Belize       1.792500e+08  2.765500e+08  5.182391e+08  6.543144e+08   \n",
       "Benin        1.267779e+09  1.562412e+09  1.695315e+09  2.268302e+09   \n",
       "\n",
       "time_period     1998-2002     2003-2007     2008-2012     2013-2017  \n",
       "country                                                              \n",
       "Algeria      5.676029e+10  1.350000e+11  2.090000e+11  1.670000e+11  \n",
       "Argentina    9.772451e+10  3.290000e+11  6.040000e+11  5.480000e+11  \n",
       "Australia    3.940000e+11  8.530000e+11  1.540000e+12  1.340000e+12  \n",
       "Austria      2.130000e+11  3.860000e+11  4.070000e+11  3.740000e+11  \n",
       "Bahamas      6.957996e+09  8.318996e+09  8.234470e+09  8.884441e+09  \n",
       "Bangladesh   5.472408e+10  7.961189e+10  1.330000e+11  1.950000e+11  \n",
       "Barbados     3.169500e+09  4.546000e+09  4.313000e+09  4.451000e+09  \n",
       "Belgium      2.590000e+11  4.720000e+11  4.980000e+11  4.540000e+11  \n",
       "Belize       9.325518e+08  1.290543e+09  1.573619e+09  1.763000e+09  \n",
       "Benin        3.054571e+09  5.969535e+09  8.117101e+09  8.476125e+09  "
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "slice_by_variable(my_data, 'gdp').dropna(axis=0).head(10)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "当然，也可以对一个国家的多个项目进行比较："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [],
   "source": [
    "def slice_by_country(dataframe, country):\n",
    "    dataframe = dataframe[dataframe.country==country] \n",
    "    dataframe = dataframe.pivot(index='variable', columns='time_period', values='value')\n",
    "    dataframe.index.name = country\n",
    "    return dataframe"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "随机抽取一个幸运国家进行展示如下："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th>time_period</th>\n",
       "      <th>1958-1962</th>\n",
       "      <th>1963-1967</th>\n",
       "      <th>1968-1972</th>\n",
       "      <th>1973-1977</th>\n",
       "      <th>1978-1982</th>\n",
       "      <th>1983-1987</th>\n",
       "      <th>1988-1992</th>\n",
       "      <th>1993-1997</th>\n",
       "      <th>1998-2002</th>\n",
       "      <th>2003-2007</th>\n",
       "      <th>2008-2012</th>\n",
       "      <th>2013-2017</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Antigua and Barbuda</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <td>accounted_flow</td>\n",
       "      <td>0.0000</td>\n",
       "      <td>0.0000</td>\n",
       "      <td>0.0000</td>\n",
       "      <td>0.0000</td>\n",
       "      <td>0.0000</td>\n",
       "      <td>0.0000</td>\n",
       "      <td>0.0000</td>\n",
       "      <td>0.0000</td>\n",
       "      <td>0.0000</td>\n",
       "      <td>0.0000</td>\n",
       "      <td>0.0000</td>\n",
       "      <td>0.0000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>accounted_flow_border_rivers</td>\n",
       "      <td>0.0000</td>\n",
       "      <td>0.0000</td>\n",
       "      <td>0.0000</td>\n",
       "      <td>0.0000</td>\n",
       "      <td>0.0000</td>\n",
       "      <td>0.0000</td>\n",
       "      <td>0.0000</td>\n",
       "      <td>0.0000</td>\n",
       "      <td>0.0000</td>\n",
       "      <td>0.0000</td>\n",
       "      <td>0.0000</td>\n",
       "      <td>0.0000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>agg_to_gdp</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>10.9600</td>\n",
       "      <td>6.2120</td>\n",
       "      <td>4.5190</td>\n",
       "      <td>4.2310</td>\n",
       "      <td>4.1070</td>\n",
       "      <td>2.0000</td>\n",
       "      <td>1.9370</td>\n",
       "      <td>2.2170</td>\n",
       "      <td>2.3720</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>arable_land</td>\n",
       "      <td>7.0000</td>\n",
       "      <td>7.0000</td>\n",
       "      <td>3.0000</td>\n",
       "      <td>3.0000</td>\n",
       "      <td>3.0000</td>\n",
       "      <td>4.0000</td>\n",
       "      <td>4.0000</td>\n",
       "      <td>4.0000</td>\n",
       "      <td>4.0000</td>\n",
       "      <td>4.0000</td>\n",
       "      <td>4.0000</td>\n",
       "      <td>4.0000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>avg_annual_rain_depth</td>\n",
       "      <td>1030.0000</td>\n",
       "      <td>1030.0000</td>\n",
       "      <td>1030.0000</td>\n",
       "      <td>1030.0000</td>\n",
       "      <td>1030.0000</td>\n",
       "      <td>1030.0000</td>\n",
       "      <td>1030.0000</td>\n",
       "      <td>1030.0000</td>\n",
       "      <td>1030.0000</td>\n",
       "      <td>1030.0000</td>\n",
       "      <td>1030.0000</td>\n",
       "      <td>1030.0000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>avg_annual_rain_vol</td>\n",
       "      <td>0.4532</td>\n",
       "      <td>0.4532</td>\n",
       "      <td>0.4532</td>\n",
       "      <td>0.4532</td>\n",
       "      <td>0.4532</td>\n",
       "      <td>0.4532</td>\n",
       "      <td>0.4532</td>\n",
       "      <td>0.4532</td>\n",
       "      <td>0.4532</td>\n",
       "      <td>0.4532</td>\n",
       "      <td>0.4532</td>\n",
       "      <td>0.4532</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>cultivated_area</td>\n",
       "      <td>7.0000</td>\n",
       "      <td>7.0000</td>\n",
       "      <td>4.0000</td>\n",
       "      <td>4.0000</td>\n",
       "      <td>4.0000</td>\n",
       "      <td>5.0000</td>\n",
       "      <td>5.0000</td>\n",
       "      <td>5.0000</td>\n",
       "      <td>5.0000</td>\n",
       "      <td>5.0000</td>\n",
       "      <td>5.0000</td>\n",
       "      <td>5.0000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>dam_capacity_per_capita</td>\n",
       "      <td>17.7600</td>\n",
       "      <td>16.1300</td>\n",
       "      <td>89.2900</td>\n",
       "      <td>85.4500</td>\n",
       "      <td>87.0200</td>\n",
       "      <td>94.5200</td>\n",
       "      <td>94.5900</td>\n",
       "      <td>83.0700</td>\n",
       "      <td>74.9700</td>\n",
       "      <td>71.0900</td>\n",
       "      <td>67.3600</td>\n",
       "      <td>65.3500</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>dependency_ratio</td>\n",
       "      <td>0.0000</td>\n",
       "      <td>0.0000</td>\n",
       "      <td>0.0000</td>\n",
       "      <td>0.0000</td>\n",
       "      <td>0.0000</td>\n",
       "      <td>0.0000</td>\n",
       "      <td>0.0000</td>\n",
       "      <td>0.0000</td>\n",
       "      <td>0.0000</td>\n",
       "      <td>0.0000</td>\n",
       "      <td>0.0000</td>\n",
       "      <td>0.0000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>exploitable_irregular_renewable_surface</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "time_period                              1958-1962  1963-1967  1968-1972  \\\n",
       "Antigua and Barbuda                                                        \n",
       "accounted_flow                              0.0000     0.0000     0.0000   \n",
       "accounted_flow_border_rivers                0.0000     0.0000     0.0000   \n",
       "agg_to_gdp                                     NaN        NaN        NaN   \n",
       "arable_land                                 7.0000     7.0000     3.0000   \n",
       "avg_annual_rain_depth                    1030.0000  1030.0000  1030.0000   \n",
       "avg_annual_rain_vol                         0.4532     0.4532     0.4532   \n",
       "cultivated_area                             7.0000     7.0000     4.0000   \n",
       "dam_capacity_per_capita                    17.7600    16.1300    89.2900   \n",
       "dependency_ratio                            0.0000     0.0000     0.0000   \n",
       "exploitable_irregular_renewable_surface        NaN        NaN        NaN   \n",
       "\n",
       "time_period                              1973-1977  1978-1982  1983-1987  \\\n",
       "Antigua and Barbuda                                                        \n",
       "accounted_flow                              0.0000     0.0000     0.0000   \n",
       "accounted_flow_border_rivers                0.0000     0.0000     0.0000   \n",
       "agg_to_gdp                                 10.9600     6.2120     4.5190   \n",
       "arable_land                                 3.0000     3.0000     4.0000   \n",
       "avg_annual_rain_depth                    1030.0000  1030.0000  1030.0000   \n",
       "avg_annual_rain_vol                         0.4532     0.4532     0.4532   \n",
       "cultivated_area                             4.0000     4.0000     5.0000   \n",
       "dam_capacity_per_capita                    85.4500    87.0200    94.5200   \n",
       "dependency_ratio                            0.0000     0.0000     0.0000   \n",
       "exploitable_irregular_renewable_surface        NaN        NaN        NaN   \n",
       "\n",
       "time_period                              1988-1992  1993-1997  1998-2002  \\\n",
       "Antigua and Barbuda                                                        \n",
       "accounted_flow                              0.0000     0.0000     0.0000   \n",
       "accounted_flow_border_rivers                0.0000     0.0000     0.0000   \n",
       "agg_to_gdp                                  4.2310     4.1070     2.0000   \n",
       "arable_land                                 4.0000     4.0000     4.0000   \n",
       "avg_annual_rain_depth                    1030.0000  1030.0000  1030.0000   \n",
       "avg_annual_rain_vol                         0.4532     0.4532     0.4532   \n",
       "cultivated_area                             5.0000     5.0000     5.0000   \n",
       "dam_capacity_per_capita                    94.5900    83.0700    74.9700   \n",
       "dependency_ratio                            0.0000     0.0000     0.0000   \n",
       "exploitable_irregular_renewable_surface        NaN        NaN        NaN   \n",
       "\n",
       "time_period                              2003-2007  2008-2012  2013-2017  \n",
       "Antigua and Barbuda                                                       \n",
       "accounted_flow                              0.0000     0.0000     0.0000  \n",
       "accounted_flow_border_rivers                0.0000     0.0000     0.0000  \n",
       "agg_to_gdp                                  1.9370     2.2170     2.3720  \n",
       "arable_land                                 4.0000     4.0000     4.0000  \n",
       "avg_annual_rain_depth                    1030.0000  1030.0000  1030.0000  \n",
       "avg_annual_rain_vol                         0.4532     0.4532     0.4532  \n",
       "cultivated_area                             5.0000     5.0000     5.0000  \n",
       "dam_capacity_per_capita                    71.0900    67.3600    65.3500  \n",
       "dependency_ratio                            0.0000     0.0000     0.0000  \n",
       "exploitable_irregular_renewable_surface        NaN        NaN        NaN  "
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "slice_by_country(data, countries[random.randint(0,100)]).head(10)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "或者对一个特定的时间进行横向比较："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [],
   "source": [
    "def slice_by_time(dataframe, time_period):\n",
    "    dataframe = dataframe[dataframe.time_period==time_period] \n",
    "    dataframe = dataframe.pivot(index='country', columns='variable', values='value')\n",
    "    dataframe.columns.name = time_period\n",
    "    return dataframe"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "随机选取一个时间段，进行查看："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th>2003-2007</th>\n",
       "      <th>accounted_flow</th>\n",
       "      <th>accounted_flow_border_rivers</th>\n",
       "      <th>agg_to_gdp</th>\n",
       "      <th>arable_land</th>\n",
       "      <th>avg_annual_rain_depth</th>\n",
       "      <th>avg_annual_rain_vol</th>\n",
       "      <th>cultivated_area</th>\n",
       "      <th>dam_capacity_per_capita</th>\n",
       "      <th>dependency_ratio</th>\n",
       "      <th>exploitable_irregular_renewable_surface</th>\n",
       "      <th>...</th>\n",
       "      <th>total_flow_border_rivers</th>\n",
       "      <th>total_pop</th>\n",
       "      <th>total_pop_access_drinking</th>\n",
       "      <th>total_renewable</th>\n",
       "      <th>total_renewable_groundwater</th>\n",
       "      <th>total_renewable_per_capita</th>\n",
       "      <th>total_renewable_surface</th>\n",
       "      <th>urban_pop</th>\n",
       "      <th>urban_pop_access_drinking</th>\n",
       "      <th>water_total_external_renewable</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>country</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <td>Afghanistan</td>\n",
       "      <td>19.00</td>\n",
       "      <td>9.0</td>\n",
       "      <td>30.6200</td>\n",
       "      <td>7794.0</td>\n",
       "      <td>327.0</td>\n",
       "      <td>213.5000</td>\n",
       "      <td>7910.0</td>\n",
       "      <td>77.63</td>\n",
       "      <td>28.7200</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>33.4</td>\n",
       "      <td>25878.00</td>\n",
       "      <td>42.6</td>\n",
       "      <td>65.3300</td>\n",
       "      <td>10.650</td>\n",
       "      <td>2525.0</td>\n",
       "      <td>55.68</td>\n",
       "      <td>6215.00</td>\n",
       "      <td>65.2</td>\n",
       "      <td>18.18</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>Albania</td>\n",
       "      <td>3.30</td>\n",
       "      <td>0.0</td>\n",
       "      <td>19.8700</td>\n",
       "      <td>578.0</td>\n",
       "      <td>1485.0</td>\n",
       "      <td>42.6900</td>\n",
       "      <td>698.0</td>\n",
       "      <td>1338.00</td>\n",
       "      <td>10.9300</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.0</td>\n",
       "      <td>3011.00</td>\n",
       "      <td>95.9</td>\n",
       "      <td>30.2000</td>\n",
       "      <td>6.200</td>\n",
       "      <td>10030.0</td>\n",
       "      <td>26.35</td>\n",
       "      <td>1548.00</td>\n",
       "      <td>97.6</td>\n",
       "      <td>3.30</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>Algeria</td>\n",
       "      <td>0.39</td>\n",
       "      <td>0.0</td>\n",
       "      <td>7.6880</td>\n",
       "      <td>7469.0</td>\n",
       "      <td>89.0</td>\n",
       "      <td>212.0000</td>\n",
       "      <td>8390.0</td>\n",
       "      <td>210.60</td>\n",
       "      <td>3.5990</td>\n",
       "      <td>5.0</td>\n",
       "      <td>...</td>\n",
       "      <td>0.0</td>\n",
       "      <td>34262.00</td>\n",
       "      <td>87.0</td>\n",
       "      <td>11.6700</td>\n",
       "      <td>1.517</td>\n",
       "      <td>340.6</td>\n",
       "      <td>10.15</td>\n",
       "      <td>22935.00</td>\n",
       "      <td>89.1</td>\n",
       "      <td>0.42</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>Andorra</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0.3757</td>\n",
       "      <td>2.3</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0.4724</td>\n",
       "      <td>2.3</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>NaN</td>\n",
       "      <td>84.88</td>\n",
       "      <td>100.0</td>\n",
       "      <td>0.3156</td>\n",
       "      <td>NaN</td>\n",
       "      <td>3718.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>72.64</td>\n",
       "      <td>100.0</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>Angola</td>\n",
       "      <td>0.40</td>\n",
       "      <td>0.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>3400.0</td>\n",
       "      <td>1010.0</td>\n",
       "      <td>1259.0000</td>\n",
       "      <td>3690.0</td>\n",
       "      <td>492.30</td>\n",
       "      <td>0.2695</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.0</td>\n",
       "      <td>19184.00</td>\n",
       "      <td>46.4</td>\n",
       "      <td>148.4000</td>\n",
       "      <td>58.000</td>\n",
       "      <td>7736.0</td>\n",
       "      <td>145.40</td>\n",
       "      <td>6682.00</td>\n",
       "      <td>68.4</td>\n",
       "      <td>0.40</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>5 rows × 60 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "2003-2007    accounted_flow  accounted_flow_border_rivers  agg_to_gdp  \\\n",
       "country                                                                 \n",
       "Afghanistan           19.00                           9.0     30.6200   \n",
       "Albania                3.30                           0.0     19.8700   \n",
       "Algeria                0.39                           0.0      7.6880   \n",
       "Andorra                 NaN                           NaN      0.3757   \n",
       "Angola                 0.40                           0.0         NaN   \n",
       "\n",
       "2003-2007    arable_land  avg_annual_rain_depth  avg_annual_rain_vol  \\\n",
       "country                                                                \n",
       "Afghanistan       7794.0                  327.0             213.5000   \n",
       "Albania            578.0                 1485.0              42.6900   \n",
       "Algeria           7469.0                   89.0             212.0000   \n",
       "Andorra              2.3                    NaN               0.4724   \n",
       "Angola            3400.0                 1010.0            1259.0000   \n",
       "\n",
       "2003-2007    cultivated_area  dam_capacity_per_capita  dependency_ratio  \\\n",
       "country                                                                   \n",
       "Afghanistan           7910.0                    77.63           28.7200   \n",
       "Albania                698.0                  1338.00           10.9300   \n",
       "Algeria               8390.0                   210.60            3.5990   \n",
       "Andorra                  2.3                      NaN               NaN   \n",
       "Angola                3690.0                   492.30            0.2695   \n",
       "\n",
       "2003-2007    exploitable_irregular_renewable_surface  ...  \\\n",
       "country                                               ...   \n",
       "Afghanistan                                      NaN  ...   \n",
       "Albania                                          NaN  ...   \n",
       "Algeria                                          5.0  ...   \n",
       "Andorra                                          NaN  ...   \n",
       "Angola                                           NaN  ...   \n",
       "\n",
       "2003-2007    total_flow_border_rivers  total_pop  total_pop_access_drinking  \\\n",
       "country                                                                       \n",
       "Afghanistan                      33.4   25878.00                       42.6   \n",
       "Albania                           0.0    3011.00                       95.9   \n",
       "Algeria                           0.0   34262.00                       87.0   \n",
       "Andorra                           NaN      84.88                      100.0   \n",
       "Angola                            0.0   19184.00                       46.4   \n",
       "\n",
       "2003-2007    total_renewable  total_renewable_groundwater  \\\n",
       "country                                                     \n",
       "Afghanistan          65.3300                       10.650   \n",
       "Albania              30.2000                        6.200   \n",
       "Algeria              11.6700                        1.517   \n",
       "Andorra               0.3156                          NaN   \n",
       "Angola              148.4000                       58.000   \n",
       "\n",
       "2003-2007    total_renewable_per_capita  total_renewable_surface  urban_pop  \\\n",
       "country                                                                       \n",
       "Afghanistan                      2525.0                    55.68    6215.00   \n",
       "Albania                         10030.0                    26.35    1548.00   \n",
       "Algeria                           340.6                    10.15   22935.00   \n",
       "Andorra                          3718.0                      NaN      72.64   \n",
       "Angola                           7736.0                   145.40    6682.00   \n",
       "\n",
       "2003-2007    urban_pop_access_drinking  water_total_external_renewable  \n",
       "country                                                                 \n",
       "Afghanistan                       65.2                           18.18  \n",
       "Albania                           97.6                            3.30  \n",
       "Algeria                           89.1                            0.42  \n",
       "Andorra                          100.0                             NaN  \n",
       "Angola                            68.4                            0.40  \n",
       "\n",
       "[5 rows x 60 columns]"
      ]
     },
     "execution_count": 15,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "slice_by_time(data, time_periods[random.randint(0,11)]).head()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 正式分析\n",
    "这里抽取了GDP数据进行分析："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'pandas.core.frame.DataFrame'>\n",
      "Index: 193 entries, Afghanistan to Zimbabwe\n",
      "Data columns (total 12 columns):\n",
      "1958-1962    112 non-null float64\n",
      "1963-1967    119 non-null float64\n",
      "1968-1972    129 non-null float64\n",
      "1973-1977    134 non-null float64\n",
      "1978-1982    147 non-null float64\n",
      "1983-1987    155 non-null float64\n",
      "1988-1992    178 non-null float64\n",
      "1993-1997    183 non-null float64\n",
      "1998-2002    187 non-null float64\n",
      "2003-2007    189 non-null float64\n",
      "2008-2012    191 non-null float64\n",
      "2013-2017    188 non-null float64\n",
      "dtypes: float64(12)\n",
      "memory usage: 18.8+ KB\n"
     ]
    }
   ],
   "source": [
    "data_gdp = slice_by_variable(my_data, 'gdp')\n",
    "data_gdp.info()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "反正国家这么多，就把有空缺数据的国家drop了"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th>time_period</th>\n",
       "      <th>1958-1962</th>\n",
       "      <th>1963-1967</th>\n",
       "      <th>1968-1972</th>\n",
       "      <th>1973-1977</th>\n",
       "      <th>1978-1982</th>\n",
       "      <th>1983-1987</th>\n",
       "      <th>1988-1992</th>\n",
       "      <th>1993-1997</th>\n",
       "      <th>1998-2002</th>\n",
       "      <th>2003-2007</th>\n",
       "      <th>2008-2012</th>\n",
       "      <th>2013-2017</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>country</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <td>Algeria</td>\n",
       "      <td>2.001461e+09</td>\n",
       "      <td>3.370870e+09</td>\n",
       "      <td>6.761786e+09</td>\n",
       "      <td>2.097190e+10</td>\n",
       "      <td>4.520709e+10</td>\n",
       "      <td>6.674227e+10</td>\n",
       "      <td>4.800330e+10</td>\n",
       "      <td>4.817786e+10</td>\n",
       "      <td>5.676029e+10</td>\n",
       "      <td>1.350000e+11</td>\n",
       "      <td>2.090000e+11</td>\n",
       "      <td>1.670000e+11</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>Argentina</td>\n",
       "      <td>2.445060e+10</td>\n",
       "      <td>2.425667e+10</td>\n",
       "      <td>3.473300e+10</td>\n",
       "      <td>5.678100e+10</td>\n",
       "      <td>8.430749e+10</td>\n",
       "      <td>1.110000e+11</td>\n",
       "      <td>2.290000e+11</td>\n",
       "      <td>2.930000e+11</td>\n",
       "      <td>9.772451e+10</td>\n",
       "      <td>3.290000e+11</td>\n",
       "      <td>6.040000e+11</td>\n",
       "      <td>5.480000e+11</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>Australia</td>\n",
       "      <td>1.988353e+10</td>\n",
       "      <td>3.037854e+10</td>\n",
       "      <td>5.192874e+10</td>\n",
       "      <td>1.100000e+11</td>\n",
       "      <td>1.940000e+11</td>\n",
       "      <td>1.890000e+11</td>\n",
       "      <td>3.250000e+11</td>\n",
       "      <td>4.360000e+11</td>\n",
       "      <td>3.940000e+11</td>\n",
       "      <td>8.530000e+11</td>\n",
       "      <td>1.540000e+12</td>\n",
       "      <td>1.340000e+12</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>Austria</td>\n",
       "      <td>7.756110e+09</td>\n",
       "      <td>1.157943e+10</td>\n",
       "      <td>2.200647e+10</td>\n",
       "      <td>5.142159e+10</td>\n",
       "      <td>7.110359e+10</td>\n",
       "      <td>1.240000e+11</td>\n",
       "      <td>1.950000e+11</td>\n",
       "      <td>2.120000e+11</td>\n",
       "      <td>2.130000e+11</td>\n",
       "      <td>3.860000e+11</td>\n",
       "      <td>4.070000e+11</td>\n",
       "      <td>3.740000e+11</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>Bahamas</td>\n",
       "      <td>2.122528e+08</td>\n",
       "      <td>3.901961e+08</td>\n",
       "      <td>5.909000e+08</td>\n",
       "      <td>7.130000e+08</td>\n",
       "      <td>1.578300e+09</td>\n",
       "      <td>2.714000e+09</td>\n",
       "      <td>3.109000e+09</td>\n",
       "      <td>4.961119e+09</td>\n",
       "      <td>6.957996e+09</td>\n",
       "      <td>8.318996e+09</td>\n",
       "      <td>8.234470e+09</td>\n",
       "      <td>8.884441e+09</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>Bangladesh</td>\n",
       "      <td>5.081413e+09</td>\n",
       "      <td>7.253575e+09</td>\n",
       "      <td>6.288246e+09</td>\n",
       "      <td>9.651149e+09</td>\n",
       "      <td>1.852540e+10</td>\n",
       "      <td>2.429803e+10</td>\n",
       "      <td>3.170887e+10</td>\n",
       "      <td>4.824431e+10</td>\n",
       "      <td>5.472408e+10</td>\n",
       "      <td>7.961189e+10</td>\n",
       "      <td>1.330000e+11</td>\n",
       "      <td>1.950000e+11</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>Barbados</td>\n",
       "      <td>9.694976e+07</td>\n",
       "      <td>1.371037e+08</td>\n",
       "      <td>2.333836e+08</td>\n",
       "      <td>4.951166e+08</td>\n",
       "      <td>1.163924e+09</td>\n",
       "      <td>1.704370e+09</td>\n",
       "      <td>1.957000e+09</td>\n",
       "      <td>2.549097e+09</td>\n",
       "      <td>3.169500e+09</td>\n",
       "      <td>4.546000e+09</td>\n",
       "      <td>4.313000e+09</td>\n",
       "      <td>4.451000e+09</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>Belgium</td>\n",
       "      <td>1.326402e+10</td>\n",
       "      <td>1.999204e+10</td>\n",
       "      <td>3.740863e+10</td>\n",
       "      <td>8.328341e+10</td>\n",
       "      <td>9.258898e+10</td>\n",
       "      <td>1.500000e+11</td>\n",
       "      <td>2.360000e+11</td>\n",
       "      <td>2.550000e+11</td>\n",
       "      <td>2.590000e+11</td>\n",
       "      <td>4.720000e+11</td>\n",
       "      <td>4.980000e+11</td>\n",
       "      <td>4.540000e+11</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>Belize</td>\n",
       "      <td>3.185759e+07</td>\n",
       "      <td>4.737931e+07</td>\n",
       "      <td>6.606250e+07</td>\n",
       "      <td>1.176500e+08</td>\n",
       "      <td>1.792500e+08</td>\n",
       "      <td>2.765500e+08</td>\n",
       "      <td>5.182391e+08</td>\n",
       "      <td>6.543144e+08</td>\n",
       "      <td>9.325518e+08</td>\n",
       "      <td>1.290543e+09</td>\n",
       "      <td>1.573619e+09</td>\n",
       "      <td>1.763000e+09</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>Benin</td>\n",
       "      <td>2.364350e+08</td>\n",
       "      <td>3.062220e+08</td>\n",
       "      <td>4.103319e+08</td>\n",
       "      <td>7.500498e+08</td>\n",
       "      <td>1.267779e+09</td>\n",
       "      <td>1.562412e+09</td>\n",
       "      <td>1.695315e+09</td>\n",
       "      <td>2.268302e+09</td>\n",
       "      <td>3.054571e+09</td>\n",
       "      <td>5.969535e+09</td>\n",
       "      <td>8.117101e+09</td>\n",
       "      <td>8.476125e+09</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "time_period     1958-1962     1963-1967     1968-1972     1973-1977  \\\n",
       "country                                                               \n",
       "Algeria      2.001461e+09  3.370870e+09  6.761786e+09  2.097190e+10   \n",
       "Argentina    2.445060e+10  2.425667e+10  3.473300e+10  5.678100e+10   \n",
       "Australia    1.988353e+10  3.037854e+10  5.192874e+10  1.100000e+11   \n",
       "Austria      7.756110e+09  1.157943e+10  2.200647e+10  5.142159e+10   \n",
       "Bahamas      2.122528e+08  3.901961e+08  5.909000e+08  7.130000e+08   \n",
       "Bangladesh   5.081413e+09  7.253575e+09  6.288246e+09  9.651149e+09   \n",
       "Barbados     9.694976e+07  1.371037e+08  2.333836e+08  4.951166e+08   \n",
       "Belgium      1.326402e+10  1.999204e+10  3.740863e+10  8.328341e+10   \n",
       "Belize       3.185759e+07  4.737931e+07  6.606250e+07  1.176500e+08   \n",
       "Benin        2.364350e+08  3.062220e+08  4.103319e+08  7.500498e+08   \n",
       "\n",
       "time_period     1978-1982     1983-1987     1988-1992     1993-1997  \\\n",
       "country                                                               \n",
       "Algeria      4.520709e+10  6.674227e+10  4.800330e+10  4.817786e+10   \n",
       "Argentina    8.430749e+10  1.110000e+11  2.290000e+11  2.930000e+11   \n",
       "Australia    1.940000e+11  1.890000e+11  3.250000e+11  4.360000e+11   \n",
       "Austria      7.110359e+10  1.240000e+11  1.950000e+11  2.120000e+11   \n",
       "Bahamas      1.578300e+09  2.714000e+09  3.109000e+09  4.961119e+09   \n",
       "Bangladesh   1.852540e+10  2.429803e+10  3.170887e+10  4.824431e+10   \n",
       "Barbados     1.163924e+09  1.704370e+09  1.957000e+09  2.549097e+09   \n",
       "Belgium      9.258898e+10  1.500000e+11  2.360000e+11  2.550000e+11   \n",
       "Belize       1.792500e+08  2.765500e+08  5.182391e+08  6.543144e+08   \n",
       "Benin        1.267779e+09  1.562412e+09  1.695315e+09  2.268302e+09   \n",
       "\n",
       "time_period     1998-2002     2003-2007     2008-2012     2013-2017  \n",
       "country                                                              \n",
       "Algeria      5.676029e+10  1.350000e+11  2.090000e+11  1.670000e+11  \n",
       "Argentina    9.772451e+10  3.290000e+11  6.040000e+11  5.480000e+11  \n",
       "Australia    3.940000e+11  8.530000e+11  1.540000e+12  1.340000e+12  \n",
       "Austria      2.130000e+11  3.860000e+11  4.070000e+11  3.740000e+11  \n",
       "Bahamas      6.957996e+09  8.318996e+09  8.234470e+09  8.884441e+09  \n",
       "Bangladesh   5.472408e+10  7.961189e+10  1.330000e+11  1.950000e+11  \n",
       "Barbados     3.169500e+09  4.546000e+09  4.313000e+09  4.451000e+09  \n",
       "Belgium      2.590000e+11  4.720000e+11  4.980000e+11  4.540000e+11  \n",
       "Belize       9.325518e+08  1.290543e+09  1.573619e+09  1.763000e+09  \n",
       "Benin        3.054571e+09  5.969535e+09  8.117101e+09  8.476125e+09  "
      ]
     },
     "execution_count": 17,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data_gdp = data_gdp.dropna(axis=0)\n",
    "data_gdp.head(10)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "现在，输出对各个国家的统计信息"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th>time_period</th>\n",
       "      <th>1958-1962</th>\n",
       "      <th>1963-1967</th>\n",
       "      <th>1968-1972</th>\n",
       "      <th>1973-1977</th>\n",
       "      <th>1978-1982</th>\n",
       "      <th>1983-1987</th>\n",
       "      <th>1988-1992</th>\n",
       "      <th>1993-1997</th>\n",
       "      <th>1998-2002</th>\n",
       "      <th>2003-2007</th>\n",
       "      <th>2008-2012</th>\n",
       "      <th>2013-2017</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <td>count</td>\n",
       "      <td>1.080000e+02</td>\n",
       "      <td>1.080000e+02</td>\n",
       "      <td>1.080000e+02</td>\n",
       "      <td>1.080000e+02</td>\n",
       "      <td>1.080000e+02</td>\n",
       "      <td>1.080000e+02</td>\n",
       "      <td>1.080000e+02</td>\n",
       "      <td>1.080000e+02</td>\n",
       "      <td>1.080000e+02</td>\n",
       "      <td>1.080000e+02</td>\n",
       "      <td>1.080000e+02</td>\n",
       "      <td>1.080000e+02</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>mean</td>\n",
       "      <td>1.220698e+10</td>\n",
       "      <td>1.811036e+10</td>\n",
       "      <td>2.987083e+10</td>\n",
       "      <td>5.703450e+10</td>\n",
       "      <td>9.046258e+10</td>\n",
       "      <td>1.355400e+11</td>\n",
       "      <td>2.018418e+11</td>\n",
       "      <td>2.492498e+11</td>\n",
       "      <td>2.787913e+11</td>\n",
       "      <td>4.529366e+11</td>\n",
       "      <td>5.852008e+11</td>\n",
       "      <td>5.868505e+11</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>std</td>\n",
       "      <td>5.941848e+10</td>\n",
       "      <td>8.516238e+10</td>\n",
       "      <td>1.292524e+11</td>\n",
       "      <td>2.173751e+11</td>\n",
       "      <td>3.465563e+11</td>\n",
       "      <td>5.374212e+11</td>\n",
       "      <td>7.520789e+11</td>\n",
       "      <td>9.476594e+11</td>\n",
       "      <td>1.147249e+12</td>\n",
       "      <td>1.542575e+12</td>\n",
       "      <td>1.875996e+12</td>\n",
       "      <td>2.067757e+12</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>min</td>\n",
       "      <td>0.000000e+00</td>\n",
       "      <td>0.000000e+00</td>\n",
       "      <td>0.000000e+00</td>\n",
       "      <td>0.000000e+00</td>\n",
       "      <td>0.000000e+00</td>\n",
       "      <td>0.000000e+00</td>\n",
       "      <td>1.347072e+08</td>\n",
       "      <td>2.457815e+08</td>\n",
       "      <td>3.376957e+08</td>\n",
       "      <td>4.214815e+08</td>\n",
       "      <td>4.851852e+08</td>\n",
       "      <td>5.377778e+08</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>25%</td>\n",
       "      <td>2.307012e+08</td>\n",
       "      <td>3.381520e+08</td>\n",
       "      <td>4.566629e+08</td>\n",
       "      <td>9.082938e+08</td>\n",
       "      <td>1.554975e+09</td>\n",
       "      <td>2.214905e+09</td>\n",
       "      <td>2.914281e+09</td>\n",
       "      <td>3.611543e+09</td>\n",
       "      <td>4.019284e+09</td>\n",
       "      <td>7.464191e+09</td>\n",
       "      <td>1.137576e+10</td>\n",
       "      <td>1.066173e+10</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>50%</td>\n",
       "      <td>8.627687e+08</td>\n",
       "      <td>1.289027e+09</td>\n",
       "      <td>2.109786e+09</td>\n",
       "      <td>4.429380e+09</td>\n",
       "      <td>8.048770e+09</td>\n",
       "      <td>7.891002e+09</td>\n",
       "      <td>1.133699e+10</td>\n",
       "      <td>1.546468e+10</td>\n",
       "      <td>1.790698e+10</td>\n",
       "      <td>3.323168e+10</td>\n",
       "      <td>5.083778e+10</td>\n",
       "      <td>5.561815e+10</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>75%</td>\n",
       "      <td>5.142953e+09</td>\n",
       "      <td>7.291137e+09</td>\n",
       "      <td>1.171799e+10</td>\n",
       "      <td>3.607061e+10</td>\n",
       "      <td>5.327859e+10</td>\n",
       "      <td>6.592513e+10</td>\n",
       "      <td>1.137500e+11</td>\n",
       "      <td>1.195000e+11</td>\n",
       "      <td>1.282500e+11</td>\n",
       "      <td>2.647500e+11</td>\n",
       "      <td>3.727500e+11</td>\n",
       "      <td>3.175000e+11</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>max</td>\n",
       "      <td>6.050000e+11</td>\n",
       "      <td>8.620000e+11</td>\n",
       "      <td>1.280000e+12</td>\n",
       "      <td>2.090000e+12</td>\n",
       "      <td>3.340000e+12</td>\n",
       "      <td>4.870000e+12</td>\n",
       "      <td>6.540000e+12</td>\n",
       "      <td>8.610000e+12</td>\n",
       "      <td>1.100000e+13</td>\n",
       "      <td>1.450000e+13</td>\n",
       "      <td>1.620000e+13</td>\n",
       "      <td>1.790000e+13</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "time_period     1958-1962     1963-1967     1968-1972     1973-1977  \\\n",
       "count        1.080000e+02  1.080000e+02  1.080000e+02  1.080000e+02   \n",
       "mean         1.220698e+10  1.811036e+10  2.987083e+10  5.703450e+10   \n",
       "std          5.941848e+10  8.516238e+10  1.292524e+11  2.173751e+11   \n",
       "min          0.000000e+00  0.000000e+00  0.000000e+00  0.000000e+00   \n",
       "25%          2.307012e+08  3.381520e+08  4.566629e+08  9.082938e+08   \n",
       "50%          8.627687e+08  1.289027e+09  2.109786e+09  4.429380e+09   \n",
       "75%          5.142953e+09  7.291137e+09  1.171799e+10  3.607061e+10   \n",
       "max          6.050000e+11  8.620000e+11  1.280000e+12  2.090000e+12   \n",
       "\n",
       "time_period     1978-1982     1983-1987     1988-1992     1993-1997  \\\n",
       "count        1.080000e+02  1.080000e+02  1.080000e+02  1.080000e+02   \n",
       "mean         9.046258e+10  1.355400e+11  2.018418e+11  2.492498e+11   \n",
       "std          3.465563e+11  5.374212e+11  7.520789e+11  9.476594e+11   \n",
       "min          0.000000e+00  0.000000e+00  1.347072e+08  2.457815e+08   \n",
       "25%          1.554975e+09  2.214905e+09  2.914281e+09  3.611543e+09   \n",
       "50%          8.048770e+09  7.891002e+09  1.133699e+10  1.546468e+10   \n",
       "75%          5.327859e+10  6.592513e+10  1.137500e+11  1.195000e+11   \n",
       "max          3.340000e+12  4.870000e+12  6.540000e+12  8.610000e+12   \n",
       "\n",
       "time_period     1998-2002     2003-2007     2008-2012     2013-2017  \n",
       "count        1.080000e+02  1.080000e+02  1.080000e+02  1.080000e+02  \n",
       "mean         2.787913e+11  4.529366e+11  5.852008e+11  5.868505e+11  \n",
       "std          1.147249e+12  1.542575e+12  1.875996e+12  2.067757e+12  \n",
       "min          3.376957e+08  4.214815e+08  4.851852e+08  5.377778e+08  \n",
       "25%          4.019284e+09  7.464191e+09  1.137576e+10  1.066173e+10  \n",
       "50%          1.790698e+10  3.323168e+10  5.083778e+10  5.561815e+10  \n",
       "75%          1.282500e+11  2.647500e+11  3.727500e+11  3.175000e+11  \n",
       "max          1.100000e+13  1.450000e+13  1.620000e+13  1.790000e+13  "
      ]
     },
     "execution_count": 18,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data_gdp.describe()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "当然了，在drop了这么多国家之后，这个统计信息基本上没有什么代表性了，不过这只是一个练手项目，所以无所谓。    \n",
    "不过值得一提的是，由于统计数据的缺失大多数由于战乱或者经济发展水平太低导致的，可以推测这时的gdp应该不会太高，我们用0补充，然后再看看统计信息有何变化："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'pandas.core.frame.DataFrame'>\n",
      "Index: 193 entries, Afghanistan to Zimbabwe\n",
      "Data columns (total 12 columns):\n",
      "1958-1962    193 non-null float64\n",
      "1963-1967    193 non-null float64\n",
      "1968-1972    193 non-null float64\n",
      "1973-1977    193 non-null float64\n",
      "1978-1982    193 non-null float64\n",
      "1983-1987    193 non-null float64\n",
      "1988-1992    193 non-null float64\n",
      "1993-1997    193 non-null float64\n",
      "1998-2002    193 non-null float64\n",
      "2003-2007    193 non-null float64\n",
      "2008-2012    193 non-null float64\n",
      "2013-2017    193 non-null float64\n",
      "dtypes: float64(12)\n",
      "memory usage: 18.8+ KB\n"
     ]
    }
   ],
   "source": [
    "data_gdp_fill = slice_by_variable(my_data, 'gdp')\n",
    "data_gdp_fill = data_gdp_fill.fillna(0)\n",
    "data_gdp_fill.info()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th>time_period</th>\n",
       "      <th>1958-1962</th>\n",
       "      <th>1963-1967</th>\n",
       "      <th>1968-1972</th>\n",
       "      <th>1973-1977</th>\n",
       "      <th>1978-1982</th>\n",
       "      <th>1983-1987</th>\n",
       "      <th>1988-1992</th>\n",
       "      <th>1993-1997</th>\n",
       "      <th>1998-2002</th>\n",
       "      <th>2003-2007</th>\n",
       "      <th>2008-2012</th>\n",
       "      <th>2013-2017</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <td>count</td>\n",
       "      <td>1.930000e+02</td>\n",
       "      <td>1.930000e+02</td>\n",
       "      <td>1.930000e+02</td>\n",
       "      <td>1.930000e+02</td>\n",
       "      <td>1.930000e+02</td>\n",
       "      <td>1.930000e+02</td>\n",
       "      <td>1.930000e+02</td>\n",
       "      <td>1.930000e+02</td>\n",
       "      <td>1.930000e+02</td>\n",
       "      <td>1.930000e+02</td>\n",
       "      <td>1.930000e+02</td>\n",
       "      <td>1.930000e+02</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>mean</td>\n",
       "      <td>6.843910e+09</td>\n",
       "      <td>1.019667e+10</td>\n",
       "      <td>1.845111e+10</td>\n",
       "      <td>3.566941e+10</td>\n",
       "      <td>5.605596e+10</td>\n",
       "      <td>8.459257e+10</td>\n",
       "      <td>1.298776e+11</td>\n",
       "      <td>1.584194e+11</td>\n",
       "      <td>1.749234e+11</td>\n",
       "      <td>2.936402e+11</td>\n",
       "      <td>3.803892e+11</td>\n",
       "      <td>3.749161e+11</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>std</td>\n",
       "      <td>4.476936e+10</td>\n",
       "      <td>6.420305e+10</td>\n",
       "      <td>9.968403e+10</td>\n",
       "      <td>1.696010e+11</td>\n",
       "      <td>2.675145e+11</td>\n",
       "      <td>4.157537e+11</td>\n",
       "      <td>5.881348e+11</td>\n",
       "      <td>7.329445e+11</td>\n",
       "      <td>8.776142e+11</td>\n",
       "      <td>1.195156e+12</td>\n",
       "      <td>1.451301e+12</td>\n",
       "      <td>1.584401e+12</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>min</td>\n",
       "      <td>0.000000e+00</td>\n",
       "      <td>0.000000e+00</td>\n",
       "      <td>0.000000e+00</td>\n",
       "      <td>0.000000e+00</td>\n",
       "      <td>0.000000e+00</td>\n",
       "      <td>0.000000e+00</td>\n",
       "      <td>0.000000e+00</td>\n",
       "      <td>0.000000e+00</td>\n",
       "      <td>0.000000e+00</td>\n",
       "      <td>0.000000e+00</td>\n",
       "      <td>0.000000e+00</td>\n",
       "      <td>0.000000e+00</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>25%</td>\n",
       "      <td>0.000000e+00</td>\n",
       "      <td>0.000000e+00</td>\n",
       "      <td>0.000000e+00</td>\n",
       "      <td>0.000000e+00</td>\n",
       "      <td>3.491800e+07</td>\n",
       "      <td>1.407056e+08</td>\n",
       "      <td>1.083038e+09</td>\n",
       "      <td>1.498951e+09</td>\n",
       "      <td>1.661818e+09</td>\n",
       "      <td>4.010785e+09</td>\n",
       "      <td>6.074884e+09</td>\n",
       "      <td>6.565382e+09</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>50%</td>\n",
       "      <td>1.244828e+08</td>\n",
       "      <td>2.270000e+08</td>\n",
       "      <td>4.060842e+08</td>\n",
       "      <td>7.774351e+08</td>\n",
       "      <td>2.017612e+09</td>\n",
       "      <td>2.353864e+09</td>\n",
       "      <td>4.848057e+09</td>\n",
       "      <td>6.522759e+09</td>\n",
       "      <td>7.850809e+09</td>\n",
       "      <td>1.970762e+10</td>\n",
       "      <td>2.647206e+10</td>\n",
       "      <td>2.780575e+10</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>75%</td>\n",
       "      <td>1.382516e+09</td>\n",
       "      <td>2.366839e+09</td>\n",
       "      <td>5.043268e+09</td>\n",
       "      <td>1.313940e+10</td>\n",
       "      <td>2.121651e+10</td>\n",
       "      <td>2.521361e+10</td>\n",
       "      <td>3.854149e+10</td>\n",
       "      <td>4.824431e+10</td>\n",
       "      <td>5.676029e+10</td>\n",
       "      <td>1.370000e+11</td>\n",
       "      <td>2.060000e+11</td>\n",
       "      <td>1.840000e+11</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>max</td>\n",
       "      <td>6.050000e+11</td>\n",
       "      <td>8.620000e+11</td>\n",
       "      <td>1.280000e+12</td>\n",
       "      <td>2.090000e+12</td>\n",
       "      <td>3.340000e+12</td>\n",
       "      <td>4.870000e+12</td>\n",
       "      <td>6.540000e+12</td>\n",
       "      <td>8.610000e+12</td>\n",
       "      <td>1.100000e+13</td>\n",
       "      <td>1.450000e+13</td>\n",
       "      <td>1.620000e+13</td>\n",
       "      <td>1.790000e+13</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "time_period     1958-1962     1963-1967     1968-1972     1973-1977  \\\n",
       "count        1.930000e+02  1.930000e+02  1.930000e+02  1.930000e+02   \n",
       "mean         6.843910e+09  1.019667e+10  1.845111e+10  3.566941e+10   \n",
       "std          4.476936e+10  6.420305e+10  9.968403e+10  1.696010e+11   \n",
       "min          0.000000e+00  0.000000e+00  0.000000e+00  0.000000e+00   \n",
       "25%          0.000000e+00  0.000000e+00  0.000000e+00  0.000000e+00   \n",
       "50%          1.244828e+08  2.270000e+08  4.060842e+08  7.774351e+08   \n",
       "75%          1.382516e+09  2.366839e+09  5.043268e+09  1.313940e+10   \n",
       "max          6.050000e+11  8.620000e+11  1.280000e+12  2.090000e+12   \n",
       "\n",
       "time_period     1978-1982     1983-1987     1988-1992     1993-1997  \\\n",
       "count        1.930000e+02  1.930000e+02  1.930000e+02  1.930000e+02   \n",
       "mean         5.605596e+10  8.459257e+10  1.298776e+11  1.584194e+11   \n",
       "std          2.675145e+11  4.157537e+11  5.881348e+11  7.329445e+11   \n",
       "min          0.000000e+00  0.000000e+00  0.000000e+00  0.000000e+00   \n",
       "25%          3.491800e+07  1.407056e+08  1.083038e+09  1.498951e+09   \n",
       "50%          2.017612e+09  2.353864e+09  4.848057e+09  6.522759e+09   \n",
       "75%          2.121651e+10  2.521361e+10  3.854149e+10  4.824431e+10   \n",
       "max          3.340000e+12  4.870000e+12  6.540000e+12  8.610000e+12   \n",
       "\n",
       "time_period     1998-2002     2003-2007     2008-2012     2013-2017  \n",
       "count        1.930000e+02  1.930000e+02  1.930000e+02  1.930000e+02  \n",
       "mean         1.749234e+11  2.936402e+11  3.803892e+11  3.749161e+11  \n",
       "std          8.776142e+11  1.195156e+12  1.451301e+12  1.584401e+12  \n",
       "min          0.000000e+00  0.000000e+00  0.000000e+00  0.000000e+00  \n",
       "25%          1.661818e+09  4.010785e+09  6.074884e+09  6.565382e+09  \n",
       "50%          7.850809e+09  1.970762e+10  2.647206e+10  2.780575e+10  \n",
       "75%          5.676029e+10  1.370000e+11  2.060000e+11  1.840000e+11  \n",
       "max          1.100000e+13  1.450000e+13  1.620000e+13  1.790000e+13  "
      ]
     },
     "execution_count": 20,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data_gdp_fill.describe()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "这样中位数应该与实际情况更加相近，平均值应该也有所改善，但是标准差就不一定了。    \n",
    "为了后面分析的方便，我们还是使用drop部分国家的版本而非补0版本。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 位置性测度与离散性测度\n",
    "其实上面的表格已经有了相关的数据，这里更多是为了练习分别抽取测度数据的命令。     \n",
    "随机抽取一年，进行输出如下："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "country\n",
      "Algeria                               4.520709e+10\n",
      "Argentina                             8.430749e+10\n",
      "Australia                             1.940000e+11\n",
      "Austria                               7.110359e+10\n",
      "Bahamas                               1.578300e+09\n",
      "                                          ...     \n",
      "United States of America              3.340000e+12\n",
      "Uruguay                               9.178802e+09\n",
      "Venezuela (Bolivarian Republic of)    7.669365e+10\n",
      "Zambia                                3.871117e+09\n",
      "Zimbabwe                              8.539701e+09\n",
      "Name: 1978-1982, Length: 108, dtype: float64\n",
      "1978-1982\n",
      "位置性测度统计结果：\n",
      "均值：\t\t 90462583987.97223\n",
      "中位数：\t 8048769521.5\n",
      "第25个百分位数： 1554974996.75\n"
     ]
    }
   ],
   "source": [
    "temp_year = random.randint(1,11)\n",
    "print(data_gdp[time_periods[temp_year]])\n",
    "print(time_periods[temp_year])\n",
    "print('位置性测度统计结果：')\n",
    "print('均值：\\t\\t',data_gdp[time_periods[temp_year]].mean())\n",
    "print('中位数：\\t',data_gdp[time_periods[temp_year]].median())\n",
    "print('第25个百分位数：',data_gdp[time_periods[temp_year]].quantile(q=0.25))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "离散性测度统计结果：\n",
      "变化范围：\t [ 0.0 \t 3340000000000.0 ]\n",
      "极差：\t\t 3340000000000.0\n",
      "方差：\t\t 1.2010124994761612e+23\n",
      "标准差：\t 346556272411.3014\n",
      "变异系数：\t 3.830934925066688\n"
     ]
    }
   ],
   "source": [
    "print('离散性测度统计结果：')\n",
    "print('变化范围：\\t [',data_gdp[time_periods[temp_year]].min(),'\\t',data_gdp[time_periods[temp_year]].max(),']')\n",
    "print('极差：\\t\\t',data_gdp[time_periods[temp_year]].max()-data_gdp[time_periods[temp_year]].min())\n",
    "print('方差：\\t\\t',data_gdp[time_periods[temp_year]].var())\n",
    "print('标准差：\\t',data_gdp[time_periods[temp_year]].std())\n",
    "print('变异系数：\\t',data_gdp[time_periods[temp_year]].std()/data_gdp[time_periods[temp_year]].mean())"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 可视化\n",
    "使用直方图和箱型图，对上述一个年份的数据进行可视化操作："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.axes._subplots.AxesSubplot at 0x6be93d30>"
      ]
     },
     "execution_count": 23,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "data_gdp[time_periods[temp_year]].hist(bins=200)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "不得不说，贫富差距看上去真的很触目惊心。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.axes._subplots.AxesSubplot at 0x6bdf1d70>"
      ]
     },
     "execution_count": 24,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "data_gdp.boxplot()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "由于箱型图的输入必须是一个DataFrame，所以索性使用整个gdp表进行可视化，还可以顺便观察到随年份变化的趋势。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "通过可视化数据，可以清晰地看出，世界上的贫富差距不仅很大，而且越来越大。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 总结\n",
    "通过此次作业，练习了不少读取、处理、可视化数据的技能，同时对EDA的流程有了初步的认识。     \n",
    "从总结的统计数据可以看出，世界上的大国“很大”，导致GDP的均值不仅比中位数大，而且差距非常之大，同时，部分国家的发展速度令人震惊（比如说虽然箱型图不标数据label，但是最上面那个谁都能猜出来是美国）。     \n",
    "美中不足的是，这次使用的是GDP总量进行分析，如果在slice的时候选择gdp_per_capita字段，就可以分析均值，或者也可以手动以population等字段相除，得出结果。     \n",
    "（不过这样恐怕美国的数据会更加夸张吧）"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Exploratury Data Analysis - Part II\n",
    "By Minaduki 2019.    \n",
    "项目的Git存储库：https://git.nju.edu.cn/Minaduki/datascience     \n",
    "本作业数据来源自：https://github.com/cmawer/pycon-2017-eda-tutorial       \n",
    "This is a EDA using the Food and Agriculture Organization(FAO) of the United Nation's AQUASTAT dataset.    \n",
    "The data used can be found [here](http://www.fao.org/nr/water/aquastat/data/query/index.html).      "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import pandas as pd\n",
    "import seaborn as sns\n",
    "import matplotlib.pyplot as plt\n",
    "from scipy import stats\n",
    "from scipy.stats import t\n",
    "import math\n",
    "import statistics\n",
    "import random"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 准备工作\n",
    "导入AQUASTAT数据，并进行如下几步操作：\n",
    "1. 将表中的几个统计的时间节点保存到一个列表中，方便之后调用和随机操作。\n",
    "2. 使用上次作业中编写的数据切分函数，将数据表中的人均GDP字段的值切分出来，存储到新的数据表中。\n",
    "3. 为了方便起见，将数据表中含有空值的条目全部丢弃。\n",
    "4. 显示新的数据表的信息和一些数据，检查导入是否成功。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [],
   "source": [
    "my_data = pd.read_csv('aquastat.csv.gzip', compression='gzip')\n",
    "time_periods = my_data.time_period.unique()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {},
   "outputs": [],
   "source": [
    "def slice_by_variable(dataframe, variable):\n",
    "    dataframe = dataframe[dataframe.variable==variable]\n",
    "    dataframe = dataframe.pivot(index='country', columns='time_period', values='value')\n",
    "    return dataframe"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {},
   "outputs": [],
   "source": [
    "def slice_by_country(dataframe, country):\n",
    "    dataframe = dataframe[dataframe.country==country] \n",
    "    dataframe = dataframe.pivot(index='variable', columns='time_period', values='value')\n",
    "    dataframe.index.name = country\n",
    "    return dataframe"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {},
   "outputs": [],
   "source": [
    "def slice_by_time(dataframe, time_period):\n",
    "    dataframe = dataframe[dataframe.time_period==time_period] \n",
    "    dataframe = dataframe.pivot(index='country', columns='variable', values='value')\n",
    "    dataframe.columns.name = time_period\n",
    "    return dataframe"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'pandas.core.frame.DataFrame'>\n",
      "Index: 108 entries, Algeria to Zimbabwe\n",
      "Data columns (total 12 columns):\n",
      "1958-1962    108 non-null float64\n",
      "1963-1967    108 non-null float64\n",
      "1968-1972    108 non-null float64\n",
      "1973-1977    108 non-null float64\n",
      "1978-1982    108 non-null float64\n",
      "1983-1987    108 non-null float64\n",
      "1988-1992    108 non-null float64\n",
      "1993-1997    108 non-null float64\n",
      "1998-2002    108 non-null float64\n",
      "2003-2007    108 non-null float64\n",
      "2008-2012    108 non-null float64\n",
      "2013-2017    108 non-null float64\n",
      "dtypes: float64(12)\n",
      "memory usage: 10.5+ KB\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th>time_period</th>\n",
       "      <th>1958-1962</th>\n",
       "      <th>1963-1967</th>\n",
       "      <th>1968-1972</th>\n",
       "      <th>1973-1977</th>\n",
       "      <th>1978-1982</th>\n",
       "      <th>1983-1987</th>\n",
       "      <th>1988-1992</th>\n",
       "      <th>1993-1997</th>\n",
       "      <th>1998-2002</th>\n",
       "      <th>2003-2007</th>\n",
       "      <th>2008-2012</th>\n",
       "      <th>2013-2017</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>country</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <td>Algeria</td>\n",
       "      <td>171.20</td>\n",
       "      <td>252.4</td>\n",
       "      <td>439.70</td>\n",
       "      <td>1186.0</td>\n",
       "      <td>2197.0</td>\n",
       "      <td>2790.0</td>\n",
       "      <td>1766.0</td>\n",
       "      <td>1612.0</td>\n",
       "      <td>1774.0</td>\n",
       "      <td>3940.0</td>\n",
       "      <td>5582.0</td>\n",
       "      <td>4210.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>Argentina</td>\n",
       "      <td>1149.00</td>\n",
       "      <td>1058.0</td>\n",
       "      <td>1401.00</td>\n",
       "      <td>2112.0</td>\n",
       "      <td>2908.0</td>\n",
       "      <td>3543.0</td>\n",
       "      <td>6804.0</td>\n",
       "      <td>8177.0</td>\n",
       "      <td>2579.0</td>\n",
       "      <td>8231.0</td>\n",
       "      <td>14348.0</td>\n",
       "      <td>12622.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>Australia</td>\n",
       "      <td>1860.00</td>\n",
       "      <td>2537.0</td>\n",
       "      <td>3886.00</td>\n",
       "      <td>7740.0</td>\n",
       "      <td>12847.0</td>\n",
       "      <td>11584.0</td>\n",
       "      <td>18531.0</td>\n",
       "      <td>23551.0</td>\n",
       "      <td>20191.0</td>\n",
       "      <td>40666.0</td>\n",
       "      <td>67217.0</td>\n",
       "      <td>55906.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>Austria</td>\n",
       "      <td>1085.00</td>\n",
       "      <td>1567.0</td>\n",
       "      <td>2906.00</td>\n",
       "      <td>6743.0</td>\n",
       "      <td>9369.0</td>\n",
       "      <td>16264.0</td>\n",
       "      <td>24958.0</td>\n",
       "      <td>26450.0</td>\n",
       "      <td>26248.0</td>\n",
       "      <td>46500.0</td>\n",
       "      <td>48137.0</td>\n",
       "      <td>43768.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>Bahamas</td>\n",
       "      <td>1753.00</td>\n",
       "      <td>2557.0</td>\n",
       "      <td>3323.00</td>\n",
       "      <td>3617.0</td>\n",
       "      <td>7164.0</td>\n",
       "      <td>11150.0</td>\n",
       "      <td>11684.0</td>\n",
       "      <td>17286.0</td>\n",
       "      <td>22503.0</td>\n",
       "      <td>24303.0</td>\n",
       "      <td>22112.0</td>\n",
       "      <td>22898.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>Bangladesh</td>\n",
       "      <td>99.58</td>\n",
       "      <td>121.7</td>\n",
       "      <td>93.05</td>\n",
       "      <td>128.9</td>\n",
       "      <td>215.7</td>\n",
       "      <td>247.6</td>\n",
       "      <td>285.7</td>\n",
       "      <td>390.4</td>\n",
       "      <td>401.7</td>\n",
       "      <td>543.1</td>\n",
       "      <td>856.6</td>\n",
       "      <td>1211.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>Barbados</td>\n",
       "      <td>416.80</td>\n",
       "      <td>579.5</td>\n",
       "      <td>966.80</td>\n",
       "      <td>1990.0</td>\n",
       "      <td>4586.0</td>\n",
       "      <td>6616.0</td>\n",
       "      <td>7464.0</td>\n",
       "      <td>9551.0</td>\n",
       "      <td>11674.0</td>\n",
       "      <td>16459.0</td>\n",
       "      <td>15316.0</td>\n",
       "      <td>15662.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>Belgium</td>\n",
       "      <td>1443.00</td>\n",
       "      <td>2110.0</td>\n",
       "      <td>3876.00</td>\n",
       "      <td>8540.0</td>\n",
       "      <td>9428.0</td>\n",
       "      <td>15201.0</td>\n",
       "      <td>23562.0</td>\n",
       "      <td>25017.0</td>\n",
       "      <td>24988.0</td>\n",
       "      <td>44092.0</td>\n",
       "      <td>44946.0</td>\n",
       "      <td>40181.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>Belize</td>\n",
       "      <td>327.10</td>\n",
       "      <td>420.4</td>\n",
       "      <td>519.40</td>\n",
       "      <td>858.8</td>\n",
       "      <td>1183.0</td>\n",
       "      <td>1587.0</td>\n",
       "      <td>2667.0</td>\n",
       "      <td>2953.0</td>\n",
       "      <td>3557.0</td>\n",
       "      <td>4325.0</td>\n",
       "      <td>4674.0</td>\n",
       "      <td>4907.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>Benin</td>\n",
       "      <td>94.46</td>\n",
       "      <td>112.0</td>\n",
       "      <td>135.00</td>\n",
       "      <td>218.5</td>\n",
       "      <td>322.5</td>\n",
       "      <td>343.7</td>\n",
       "      <td>315.2</td>\n",
       "      <td>356.6</td>\n",
       "      <td>411.9</td>\n",
       "      <td>685.5</td>\n",
       "      <td>807.7</td>\n",
       "      <td>779.1</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "time_period  1958-1962  1963-1967  1968-1972  1973-1977  1978-1982  1983-1987  \\\n",
       "country                                                                         \n",
       "Algeria         171.20      252.4     439.70     1186.0     2197.0     2790.0   \n",
       "Argentina      1149.00     1058.0    1401.00     2112.0     2908.0     3543.0   \n",
       "Australia      1860.00     2537.0    3886.00     7740.0    12847.0    11584.0   \n",
       "Austria        1085.00     1567.0    2906.00     6743.0     9369.0    16264.0   \n",
       "Bahamas        1753.00     2557.0    3323.00     3617.0     7164.0    11150.0   \n",
       "Bangladesh       99.58      121.7      93.05      128.9      215.7      247.6   \n",
       "Barbados        416.80      579.5     966.80     1990.0     4586.0     6616.0   \n",
       "Belgium        1443.00     2110.0    3876.00     8540.0     9428.0    15201.0   \n",
       "Belize          327.10      420.4     519.40      858.8     1183.0     1587.0   \n",
       "Benin            94.46      112.0     135.00      218.5      322.5      343.7   \n",
       "\n",
       "time_period  1988-1992  1993-1997  1998-2002  2003-2007  2008-2012  2013-2017  \n",
       "country                                                                        \n",
       "Algeria         1766.0     1612.0     1774.0     3940.0     5582.0     4210.0  \n",
       "Argentina       6804.0     8177.0     2579.0     8231.0    14348.0    12622.0  \n",
       "Australia      18531.0    23551.0    20191.0    40666.0    67217.0    55906.0  \n",
       "Austria        24958.0    26450.0    26248.0    46500.0    48137.0    43768.0  \n",
       "Bahamas        11684.0    17286.0    22503.0    24303.0    22112.0    22898.0  \n",
       "Bangladesh       285.7      390.4      401.7      543.1      856.6     1211.0  \n",
       "Barbados        7464.0     9551.0    11674.0    16459.0    15316.0    15662.0  \n",
       "Belgium        23562.0    25017.0    24988.0    44092.0    44946.0    40181.0  \n",
       "Belize          2667.0     2953.0     3557.0     4325.0     4674.0     4907.0  \n",
       "Benin            315.2      356.6      411.9      685.5      807.7      779.1  "
      ]
     },
     "execution_count": 30,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data_gdp = slice_by_variable(my_data, 'gdp_per_capita')\n",
    "data_gdp = data_gdp.dropna(axis=0)\n",
    "data_gdp.info()\n",
    "data_gdp.head(10)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 抽取数据\n",
    "随机抽取一个年份的数据存入变量data中，作为之后使用的数据，打印出数据的概况和位置性、离散性测度信息如下所示："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\u001b[1;31m统计区间： 1968-1972 \u001b[0m\n",
      "country\n",
      "Algeria                                439.7\n",
      "Argentina                             1401.0\n",
      "Australia                             3886.0\n",
      "Austria                               2906.0\n",
      "Bahamas                               3323.0\n",
      "                                       ...  \n",
      "United States of America              6003.0\n",
      "Uruguay                                776.1\n",
      "Venezuela (Bolivarian Republic of)    1296.0\n",
      "Zambia                                 417.6\n",
      "Zimbabwe                               480.5\n",
      "Name: 1968-1972, Length: 108, dtype: float64\n",
      "\n",
      "\u001b[1;31m位置性测度统计结果：\u001b[0m\n",
      "均值：\t\t 1195.8373148148148\n",
      "中位数：\t 439.9\n",
      "第25个百分位数： 221.95000000000002\n",
      "\n",
      "\u001b[1;31m离散性测度统计结果：\u001b[0m\n",
      "变化范围：\t [ 0.0 \t 6003.0 ]\n",
      "极差：\t\t 6003.0\n",
      "方差：\t\t 2376326.3116497314\n",
      "标准差：\t 1541.533753003719\n",
      "变异系数：\t 1.2890831670045673\n"
     ]
    }
   ],
   "source": [
    "temp_year = random.randint(0,11)\n",
    "print('\\033[1;31m统计区间：',time_periods[temp_year],'\\033[0m')\n",
    "data = data_gdp[time_periods[temp_year]]\n",
    "print(data)\n",
    "print('\\n\\033[1;31m位置性测度统计结果：\\033[0m')\n",
    "print('均值：\\t\\t',data.mean())\n",
    "print('中位数：\\t',data.median())\n",
    "print('第25个百分位数：',data.quantile(q=0.25))\n",
    "print('\\n\\033[1;31m离散性测度统计结果：\\033[0m')\n",
    "print('变化范围：\\t [',data.min(),'\\t',data.max(),']')\n",
    "print('极差：\\t\\t',data.max()-data.min())\n",
    "print('方差：\\t\\t',data.var())\n",
    "print('标准差：\\t',data.std())\n",
    "print('变异系数：\\t',data.std()/data.mean())"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 随机数生成\n",
    "接下来做一些均值估计的准备工作，首先指定一个随机数种子，然后先生成一个容量为80的小样本："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {},
   "outputs": [],
   "source": [
    "np.random.seed(4396)\n",
    "sample_data=np.random.choice(a=data,size=50)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "打印出生成的样本的均值看看："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "样本的均值为:  1106.7362\n"
     ]
    }
   ],
   "source": [
    "print('样本的均值为: ',sample_data.mean())"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "再看看多个样本的均值分布，这里与课上一样，也取500次样本："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "样本均值的均值为:  1189.8407960000002\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "point_estimates=[]\n",
    "for x in range(500):      #500次循环\n",
    "    sample=np.random.choice(a=data,size=100)    #每次随机抽样100个样本\n",
    "    point_estimates.append(sample.mean())\n",
    "    \n",
    "pd.DataFrame(point_estimates).hist(bins=40)    #均值大致呈钟型分布\n",
    "print('样本均值的均值为: ', np.array(point_estimates).mean())"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 均值置信区间估计\n",
    "对于置信水平α与与之相对应的置信区间，置信区间中有α机会包含总体参数（如均值）。     \n",
    "这里使用课件中提供的定义函数并略加修改，可以指定相应的参数。    \n",
    "对于特定统计区间的人均GDP的均值，返回具有95%置信水平的置信区间，如下所示："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "metadata": {},
   "outputs": [],
   "source": [
    "def makeConfidenceInterval(data, sample_size, _alpha):\n",
    "    sample=np.random.choice(a=data,size=sample_size)\n",
    "    sigma=sample.std()/(sample_size**0.5)\n",
    "    return stats.t.interval(alpha=_alpha,    #置信水平confidence level\n",
    "                 df=sample_size-1,  #自由度Degrees of freedom\n",
    "                loc=sample.mean(),\n",
    "                scale=sigma)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(798.3081093324076, 1489.2623906675926)\n"
     ]
    }
   ],
   "source": [
    "print(makeConfidenceInterval(data, 80, 0.95))\n",
    "#返回拥有95%置信水平的置信区间"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "修改置信度，查看不同置信水平下的置信区间大小："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "confidence 0.500000 has a interval of confidence range 244.280000\n",
      "confidence 0.800000 has a interval of confidence range 429.240000\n",
      "confidence 0.850000 has a interval of confidence range 554.190000\n",
      "confidence 0.900000 has a interval of confidence range 641.840000\n",
      "confidence 0.950000 has a interval of confidence range 693.900000\n",
      "confidence 0.990000 has a interval of confidence range 814.570000\n"
     ]
    }
   ],
   "source": [
    "for confidence in (.5, .8, .85, .9, .95, .99):\n",
    "    interval=makeConfidenceInterval(data, 80, confidence)\n",
    "    range_of_interval=round(interval[1]-interval[0],2)\n",
    "    print('confidence %f has a interval of confidence range %f' %(confidence,range_of_interval))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "之前计算出的均值的确包含在这个置信区间内的，不过也不是所有的时间内都会包含。    \n",
    "在重复运行中，出现过几次比较极端的区间，完全不包含实际的均值。     \n",
    "如果抽取的样本中有极端数据（比如美国），就有可能会导致区间不准确。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 置信区间验证\n",
    "由于置信区间不一定会包含要求的值，因此接下来，对于置信空间的准确性进行检验验证：     \n",
    "首先取出数据集的实际均值，然后多次计算置信区间，记录置信区间包含实际均值的频率。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0.9426\n"
     ]
    }
   ],
   "source": [
    "pop_mean=data.mean()\n",
    "times_in_interval=0;\n",
    "times = 10000\n",
    "for i in range(times):\n",
    "    interval=makeConfidenceInterval(data, 80, 0.95)\n",
    "    if (pop_mean>=interval[0]) & (pop_mean<=interval[1]):\n",
    "        times_in_interval += 1\n",
    "        \n",
    "print(times_in_interval/times)   #置信区间有95的可能性包含总体均值"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "改变置信水平，重新计算："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0.7952\n"
     ]
    }
   ],
   "source": [
    "pop_mean=data.mean()\n",
    "times_in_interval=0;\n",
    "times = 10000\n",
    "for i in range(times):\n",
    "    interval=makeConfidenceInterval(data, 80, 0.80)\n",
    "    if (pop_mean>=interval[0]) & (pop_mean<=interval[1]):\n",
    "        times_in_interval += 1\n",
    "        \n",
    "print(times_in_interval/times)   #置信区间有95的可能性包含总体均值"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "可以看出，置信区间的可信度与置信水平一致，这也正是“置信水平”一词的含义。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 随堂练习：Titanic-1\n",
    "对于不同舱位等级的分组，做个船费均值的区间估计："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 40,
   "metadata": {},
   "outputs": [],
   "source": [
    "titanic = pd.read_csv(\"Titanic.csv\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "自定义一个切分函数，这样的函数已经多次用到过了，此函数可以将指定的Pclass的旅客的所有信息放到一张新的DataFrame里面："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 41,
   "metadata": {},
   "outputs": [],
   "source": [
    "def slice_by_Pclass(dataframe, Pclass):\n",
    "    dataframe = dataframe[dataframe.Pclass==Pclass] \n",
    "    dataframe.columns.name = Pclass\n",
    "    return dataframe"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "将一等舱的乘客信息切分出来，看看切出来的数据如何："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 42,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'pandas.core.frame.DataFrame'>\n",
      "Int64Index: 216 entries, 1 to 889\n",
      "Data columns (total 12 columns):\n",
      "PassengerId    216 non-null int64\n",
      "Survived       216 non-null int64\n",
      "Pclass         216 non-null int64\n",
      "Name           216 non-null object\n",
      "Sex            216 non-null object\n",
      "Age            186 non-null float64\n",
      "SibSp          216 non-null int64\n",
      "Parch          216 non-null int64\n",
      "Ticket         216 non-null object\n",
      "Fare           216 non-null float64\n",
      "Cabin          176 non-null object\n",
      "Embarked       214 non-null object\n",
      "dtypes: float64(2), int64(5), object(5)\n",
      "memory usage: 17.7+ KB\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th>1</th>\n",
       "      <th>PassengerId</th>\n",
       "      <th>Survived</th>\n",
       "      <th>Pclass</th>\n",
       "      <th>Name</th>\n",
       "      <th>Sex</th>\n",
       "      <th>Age</th>\n",
       "      <th>SibSp</th>\n",
       "      <th>Parch</th>\n",
       "      <th>Ticket</th>\n",
       "      <th>Fare</th>\n",
       "      <th>Cabin</th>\n",
       "      <th>Embarked</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>Cumings, Mrs. John Bradley (Florence Briggs Th...</td>\n",
       "      <td>female</td>\n",
       "      <td>38.0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>PC 17599</td>\n",
       "      <td>71.2833</td>\n",
       "      <td>C85</td>\n",
       "      <td>C</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>3</td>\n",
       "      <td>4</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>Futrelle, Mrs. Jacques Heath (Lily May Peel)</td>\n",
       "      <td>female</td>\n",
       "      <td>35.0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>113803</td>\n",
       "      <td>53.1000</td>\n",
       "      <td>C123</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>6</td>\n",
       "      <td>7</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>McCarthy, Mr. Timothy J</td>\n",
       "      <td>male</td>\n",
       "      <td>54.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>17463</td>\n",
       "      <td>51.8625</td>\n",
       "      <td>E46</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>11</td>\n",
       "      <td>12</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>Bonnell, Miss. Elizabeth</td>\n",
       "      <td>female</td>\n",
       "      <td>58.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>113783</td>\n",
       "      <td>26.5500</td>\n",
       "      <td>C103</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>23</td>\n",
       "      <td>24</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>Sloper, Mr. William Thompson</td>\n",
       "      <td>male</td>\n",
       "      <td>28.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>113788</td>\n",
       "      <td>35.5000</td>\n",
       "      <td>A6</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "1   PassengerId  Survived  Pclass  \\\n",
       "1             2         1       1   \n",
       "3             4         1       1   \n",
       "6             7         0       1   \n",
       "11           12         1       1   \n",
       "23           24         1       1   \n",
       "\n",
       "1                                                Name     Sex   Age  SibSp  \\\n",
       "1   Cumings, Mrs. John Bradley (Florence Briggs Th...  female  38.0      1   \n",
       "3        Futrelle, Mrs. Jacques Heath (Lily May Peel)  female  35.0      1   \n",
       "6                             McCarthy, Mr. Timothy J    male  54.0      0   \n",
       "11                           Bonnell, Miss. Elizabeth  female  58.0      0   \n",
       "23                       Sloper, Mr. William Thompson    male  28.0      0   \n",
       "\n",
       "1   Parch    Ticket     Fare Cabin Embarked  \n",
       "1       0  PC 17599  71.2833   C85        C  \n",
       "3       0    113803  53.1000  C123        S  \n",
       "6       0     17463  51.8625   E46        S  \n",
       "11      0    113783  26.5500  C103        S  \n",
       "23      0    113788  35.5000    A6        S  "
      ]
     },
     "execution_count": 42,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "new_data = slice_by_Pclass(titanic,1)\n",
    "new_data.info()\n",
    "new_data.head()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "接下来抽样，每次抽取100个样本，循环500次，记录每次的均值，然后输出："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 43,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "样本均值的均值为:  84.159923482\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "point_estimates=[]\n",
    "\n",
    "for x in range(500):      #500次循环\n",
    "    sample=np.random.choice(a=new_data['Fare'],size=100)    #每次随机抽样100个样本\n",
    "    point_estimates.append(sample.mean())\n",
    "    \n",
    "pd.DataFrame(point_estimates).hist(bins=40)    #均值大致呈钟型分布\n",
    "print('样本均值的均值为: ', np.array(point_estimates).mean())"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "最后，对所有三个舱位，输出均值的置信区间："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 44,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Class 1:  (71.54331363278226, 98.20568436721774)\n",
      "Class 2:  (16.158391739053343, 20.776190260946656)\n",
      "Class 3:  (12.410281464159652, 17.662126535840354)\n"
     ]
    }
   ],
   "source": [
    "interval_1 = makeConfidenceInterval(slice_by_Pclass(titanic,1)['Fare'], 100, 0.95)\n",
    "interval_2 = makeConfidenceInterval(slice_by_Pclass(titanic,2)['Fare'], 100, 0.95)\n",
    "interval_3 = makeConfidenceInterval(slice_by_Pclass(titanic,3)['Fare'], 100, 0.95)\n",
    "print('Class 1: ', interval_1)\n",
    "print('Class 2: ', interval_2)\n",
    "print('Class 3: ', interval_3)\n",
    "#返回拥有95%置信水平的置信区间"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 方差&标准差置信区间估计\n",
    "首先，随机抽取几组样本，将抽取的样本的方差与标准差作图，可以看出，值满足钟形分布："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 45,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[<matplotlib.axes._subplots.AxesSubplot object at 0x6b8c9eb0>]],\n",
       "      dtype=object)"
      ]
     },
     "execution_count": 45,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "point_estimates=[]\n",
    "for x in range(500):      #500次循环\n",
    "    sample=np.random.choice(a=data,size=100)    #每次随机抽样100个样本\n",
    "    point_estimates.append(sample.var())\n",
    "    \n",
    "pd.DataFrame(point_estimates).hist(bins=40)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 46,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[<matplotlib.axes._subplots.AxesSubplot object at 0x6bc7d3b0>]],\n",
       "      dtype=object)"
      ]
     },
     "execution_count": 46,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "point_estimates=[]\n",
    "for x in range(500):      #500次循环\n",
    "    sample=np.random.choice(a=data,size=100)    #每次随机抽样100个样本\n",
    "    point_estimates.append(sample.std())\n",
    "    \n",
    "pd.DataFrame(point_estimates).hist(bins=40)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "下面进行置信区间的计算。     \n",
    "对于置信水平α与与之相对应的置信区间，置信区间中有α机会包含总体参数（如均值）。    \n",
    "通过查阅资料可以得知，对于方差的置信区间，可以由以下公式求得：\n",
    "$$\\left ( \\frac{\\left ( n-1 \\right )S^{2}}{\\chi_{\\alpha /2}^{2}\\left ( n-1 \\right ) },\\frac{\\left ( n-1 \\right )S^{2}}{\\chi_{1-\\alpha /2}^{2}\\left ( n-1 \\right ) } \\right )$$\n",
    "而对于标准差，只需要将区间值开方即可。       \n",
    "对于特定统计区间的人均GDP的方差与标准差，返回具有95%置信水平的置信区间，如下所示："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 47,
   "metadata": {},
   "outputs": [],
   "source": [
    "def makeConfidenceInterval_var(data, sample_size, _alpha):\n",
    "    _alpha = 1 - _alpha\n",
    "    sample=np.random.choice(a=data,size=sample_size)\n",
    "    sigma = sample.var() * (sample_size - 1)\n",
    "    chi1 = stats.chi2.ppf((1 - _alpha / 2), sample_size - 1)\n",
    "    chi2 = stats.chi2.ppf(_alpha / 2, sample_size - 1)\n",
    "    interval = [sigma / chi1, sigma / chi2]\n",
    "    return interval"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 48,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[1705479.8684379577, 3194550.8218672005]\n"
     ]
    }
   ],
   "source": [
    "print(makeConfidenceInterval_var(data, 80, 0.95))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 49,
   "metadata": {},
   "outputs": [],
   "source": [
    "def makeConfidenceInterval_std(data, sample_size, _alpha):\n",
    "    _alpha = 1 - _alpha\n",
    "    sample=np.random.choice(a=data,size=sample_size)\n",
    "    sigma = sample.std() * ((sample_size - 1) ** 0.5)\n",
    "    chi1 = stats.chi2.ppf((1 - _alpha / 2), sample_size - 1)\n",
    "    chi2 = stats.chi2.ppf(_alpha / 2, sample_size - 1)\n",
    "    interval = [sigma / (chi1 ** 0.5), sigma / (chi2 ** 0.5)]\n",
    "    return interval"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 50,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[1311.8371064938947, 1795.4012090996716]\n"
     ]
    }
   ],
   "source": [
    "print(makeConfidenceInterval_std(data, 80, 0.95))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 置信区间验证\n",
    "由于置信区间不一定会包含要求的值，因此接下来，对于置信空间的准确性进行检验验证：     \n",
    "首先取出数据集的实际方差与标准差，然后多次计算置信区间，记录置信区间包含实际值的频率。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 51,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0.8654\n"
     ]
    }
   ],
   "source": [
    "pop_var=data.var()\n",
    "times_in_interval=0;\n",
    "times = 10000\n",
    "for i in range(times):\n",
    "    interval=makeConfidenceInterval_var(data, 80, 0.95)\n",
    "    if (pop_var>=interval[0]) & (pop_var<=interval[1]):\n",
    "        times_in_interval += 1\n",
    "        \n",
    "print(times_in_interval/times)   #置信区间有95的可能性包含总体方差"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 52,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0.8645\n"
     ]
    }
   ],
   "source": [
    "pop_std=data.std()\n",
    "times_in_interval=0;\n",
    "times = 10000\n",
    "for i in range(times):\n",
    "    interval=makeConfidenceInterval_std(data, 80, 0.95)\n",
    "    if (pop_std>=interval[0]) & (pop_std<=interval[1]):\n",
    "        times_in_interval += 1\n",
    "        \n",
    "print(times_in_interval/times)   #置信区间有95的可能性包含总体标准差"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "遗憾的是，似乎自己写的算法还存在一些问题，实现不了预定的置信度，如果直接把均值估计的代码拿过来呢？     \n",
    "下面使用的是均值估计的代码，唯一的不同只有将统计数据从均值换成了标准差："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 53,
   "metadata": {},
   "outputs": [],
   "source": [
    "def makeConfidenceInterval_std_new(data, sample_size, _alpha):\n",
    "    sample=np.random.choice(a=data,size=sample_size)\n",
    "    sigma=sample.std()/(sample_size**0.5)\n",
    "    return stats.t.interval(alpha=_alpha,    #置信水平confidence level\n",
    "                 df=sample_size-1,  #自由度Degrees of freedom\n",
    "                loc=sample.std(),\n",
    "                scale=sigma)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 54,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(1290.127709442963, 2028.6956742126722)\n"
     ]
    }
   ],
   "source": [
    "print(makeConfidenceInterval_std_new(data, 80, 0.95))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 55,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0.9374\n"
     ]
    }
   ],
   "source": [
    "pop_std=data.std()\n",
    "times_in_interval=0;\n",
    "times = 10000\n",
    "for i in range(times):\n",
    "    interval=makeConfidenceInterval_std_new(data, 80, 0.95)\n",
    "    if (pop_std>=interval[0]) & (pop_std<=interval[1]):\n",
    "        times_in_interval += 1\n",
    "        \n",
    "print(times_in_interval/times)   #置信区间有95的可能性包含总体标准差"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "效果有所改善，不过感觉这并不是一个正确的方法，本来不准备写在作业里，但是表现不错实在舍不得删掉。   \n",
    "也许是因为本题中均值与标准差数量级相当，因此才有较高的准确性？      \n",
    "P.s. 本来想调用MATLAB计算的，但是树莓派装MATLAB好像很麻烦，所以最终没有。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 假设检验\n",
    "由于之前的数据生成环节是随机截取一个年份的数据，因此在这里就不太好假设均值数据，因此采用这样的策略：     \n",
    "进行两次不同的假设，第一次的假设值是实际平均值加上50，模拟猜中了的情况，第二次的假设值是实际平均值加上5000，模拟猜错了的情况。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 1. 假设正确\n",
    "首先是模拟假设正确的情况，"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 56,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "总体的均值为:  1195.8373148148148\n",
      "空假设H0是：总体的均值是 1245.8373148148148  \n",
      "\n",
      "从样本构造的t统计量 =  1.4733243038809523\n",
      "单样本双边检验的 p =  0.14463705684320285\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "print('总体的均值为: ',data.mean())   #假装我们不知道\n",
    "print('空假设H0是：总体的均值是',data.mean() + 50,' \\n')\n",
    "\n",
    "sample_data=np.random.choice(a=data,size=80) #从中随机抽取80个做样本\n",
    "\n",
    "t_statistic,p_value=stats.ttest_1samp(a=sample_data,popmean=data.mean() + 50)\n",
    "print('从样本构造的t统计量 = ',t_statistic)    #t的绝对值越大，p值越小，可参见下面的t-分布图\n",
    "print('单样本双边检验的 p = ',p_value)\n",
    "\n",
    "#画一下样本容量为80时的t分布曲线\n",
    "df=80-1\n",
    "\n",
    "x = np.linspace(stats.t.ppf(0.00000001,df),stats.t.ppf(0.99999999,df),80)  #ppf函数是CDF的逆函数，用来求分位点\n",
    "plt.plot(x, t.pdf(x, df))  #pdf生成概率密度函数表\n",
    "plt.plot((t_statistic,t_statistic),(-0.01,0.4),'-.r')\n",
    "str_legend=('t distribution','calculated t')\n",
    "plt.legend(str_legend)\n",
    "\n",
    "\n",
    "x_025=stats.t.ppf(0.025,df) #注意：同样选取alpha=0.5，做双边test时要给左、右两侧各分配0.25\n",
    "plt.plot((x_025,x_025),(-0.01,0.4),'--g') #这根线是双边检验的左阈值\n",
    "x_975=stats.t.ppf(0.975,df)\n",
    "plt.plot((x_975,x_975),(-0.01,0.4),'--g') #这根线是双边检验的右阈值\n",
    "#print(x_975)\n",
    "\n",
    "rect1=plt.Rectangle((x_025,0),x_975*2,0.5,color='g',alpha=0.25)\n",
    "plt.gca().add_patch(rect1)\n",
    "\n",
    "rect2=plt.Rectangle((x_975,0),5,0.5,color='r',alpha=0.25)\n",
    "plt.gca().add_patch(rect2)\n",
    "rect3=plt.Rectangle((x_025,0),-5,0.5,color='r',alpha=0.25)\n",
    "plt.gca().add_patch(rect3)\n",
    "\n",
    "#plt.ylim(-0.02,0.5)\n",
    "plt.text(x_025,0.4,'accept region')   #图片上不支持中文\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 57,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "p =  0.14463705684320285 \n",
      "\n",
      "\u001b[1;31m 接受 \u001b[0m H0\n"
     ]
    }
   ],
   "source": [
    "print('p = ',p_value,'\\n')\n",
    "alpha=0.05\n",
    "if p_value>=0.05:\n",
    "    print('\\033[1;31m 接受 \\033[0m H0')\n",
    "else:\n",
    "    print('\\033[1;31m 拒绝 \\033[0m H0,即总体的均值不等于',data.mean() + 50,'，此时错误拒绝H0的概率为',p_value,'小于显著性水平')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "不论是从计算得出的p值还是从自由度79的t-分布的图像中，都可以很容易的看出，t分布值处在接受域中，如果选择拒绝假设的话，有50%的可能性是错误的，因此我们没有充分的理由认为H0的假设不成立，选择接受假设。(这个重新运行过了，所以50%的概率值可能变了，不过不影响结论)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 2. 假设错误"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 58,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "总体的均值为:  1195.8373148148148\n",
      "空假设H0是：总体的均值是 6195.837314814815  \n",
      "\n",
      "从样本构造的t统计量 =  -32.507456524790065\n",
      "单样本双边检验的 p =  1.7371608633897112e-47\n"
     ]
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXcAAAD8CAYAAACMwORRAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4zLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvnQurowAAIABJREFUeJzt3Xl8VNX5+PHPM5NlskcCVGUpWAUFhAARf0UUWrFiq1gVlbZfFdeiYmutLVRbilhbqmirX1z7raXa+kW+uBSpWy1SoWghYFQWQUCUsEhYsmeSzMz5/TEzWSfJTZjtzjzv12temZl77j0P15dPTp577rlijEEppVRiccQ6AKWUUuGnyV0ppRKQJnellEpAmtyVUioBaXJXSqkEpMldKaUSkCZ3pZRKQJrclVIqAWlyV0qpBJQSq4579+5tBg0aFKvulUpsR45AamqsowipuqYc0ys/Jn3LkXKys2LTtyWNjdCrV6dNNmzYcMgY06erQ8UsuQ8aNIji4uJYda9UYluyBI4/PtZRhLR23Ys0XHFpTPpOW/oi48fFpm9LDhyA6dM7bSIin1k5lJZllFIqAWlyV0olhTVvruHTL45E7PjfnDOH8urqiB2/u2JWllFKqWha8+YaxNX1eNbj9ZLidHb7+K8uWNCTsCJGk7tSKup+ftPPObj/IA31DVw24zIu+u5FAKz71zr+54H/wev1ktcrj4f++hB1NXU8Mu8Rtn20DUG4+odXM/GCiax/Zz2Lf7+YxoZGThx4IrMfmE1GVgbTJ0xn0rcmse5f60hPT+fnD/+co4ePsvattXzoEP7vvRt44Z57+Eq/fk3xzFiwAFdaGu9/8glnjRjBvdddx22PPMJHn36Kx+tl3jXXcPGECdS63cxYsIBNu3czdMAA9h06xKO3307R0KEMmj6d4iefpHdeHg8tXcrTr70GwA3f+ha3T5vG7gMHuGD2bCacfjprN22iX58+/O1XvyIjPT0i51iTu1Iq6n56/0/Jzc+l3l3PzItncs4F52B8hoU/W8jDzz/MCQNOoLK8EoBn/vsZsnKyePr1pwGoqqii4kgFf1n0Fxb+ZSEZmRn87xP/y9I/LuWaH1wDQHZONk+//jRvvPAGi+5dxG/++BvGTx7P2S4Hd9/w05AxlZaVsXbRIpxOJ3f94Q98fcwYnp49m/LqasbdfDOTx47l8eXLOS4nhy2LF7Pp008pvOGGdsfZsG0bf3r9df7z2GMY4Mybb2biqFEcl5PDJ6Wl/O8vfsEf7ryTK+bN44V33uG/zjsvIufYUnIXkSnAw4AT+B9jTMi/P0RkGvB/wBnGGJ0Ko5QK6cXFL7L6jdUAlO0vY+/uvZQfLmfkuJGcMOAEAHLzcwHY8O8NzH1kbtO+OXk5vPvPd9m9Yze3TbsNAE+jh2FjhjW1+frUrwNw7tRzeexXj1mK6fKJE3EGyjFvFhezfO1aFj7/PADuhgY+P3iQNR99xA8vuwyAEYMHM/IrX2l3nDUffcQlEyaQlZEBwKXnnMPqDz9k6llnMfiEEyg8+WQAxg4dyu4DByzF1hNdJncRcQKPAucBpcB6EVlujNnSpl0O8APgP5EIVCmVGDbuLGXDxk949MVHcWW4uH367TTUN2CMQZD2OxgQaf29MYaiCUX84pFfhOyjVfsQhwwlmIyDx3/hnnsYOnBgu3670lmL9Bb3HjgdDuq8XmvB9YCV2TLjgB3GmF3GmAZgCXBxiHb3AvcD7jDGp5RKMDXuBnJyc3BluPh85+dsed8/Thw+ZjgfrPuA/Xv2AzSVZYrOLuKlZ15q2r+qoopho4exacMm9u7eC4C7zs2eXXua2ry94u2mn8NHDwcgMyuT2voGSzGef8YZ/PdLLzUl8/c/+QSACaefztJVqwDYsns3H+3a1W7fc0aO5OV//5tat5uaujpeWr2as0eOtHZywshKcu8H7GnxuTTwXRMRGQ0MMMas6OxAInKTiBSLSHFZWVm3gwVg0iT/SyllS2cO/TJer5drJl/DU799imGj/eWU/IJ8fvzrHzN35lyuv+B65s+aD8BVs66iqqKKa8+/lusvuJ73332f/IJ8Zj8wm3t/eC/XT7meWy+5lc93ft7UR1VFFddPuZ4XFr/Arb+4FYCvXfQ1nntnI6NvvJGde/d2GuMvrr6aRo+Hkddfz4hrr+UXT/vr/bdcfDFl5eUMmzGDnz/9NMMHDSIvK6vVvmOGDGHG+ecz7uabOfOWW7jhW99i9CmnhO38WSVd/ZkhIpcD5xtjbgh8vgoYZ4y5LfDZAawEZhhjdovIKuDOrmruRUVFpkd3qAYTe+C3p1IqhDi9Q/WtoxvY/PFqRn3n9m7v+9oHjazf6eGEfAc3fC2tXakmaPqE6Ty5/EnyeuW1+n7Dvg2k/Gs1P/xq9/sO8nq9NHq9uNLS2Ll3L+f++Mdsf/ZZ0sK11IO1O1Q3GGOKujqUlQuqpcCAFp/7A/tafM4BRgCrAif7eGC5iEzVi6pKqZZ+9dmzVHoO8VA39/MZw6vvN1DvgV0HfVw0JpXj8y0W0wOe/fBZHJ5D/LCbfbdUW1/P1370Ixo9Hgzw+I9+FL7EHmZWkvt64BQRGQzsBaYD3w1uNMZUAL2Dn62O3JVSyqrSwz6q3HDRmFRe2djIlr1ejs8PXVVesmZJxOLIycyk+MknI3b8cOqy5m6M8QCzgDeArcBSY8xmEZkvIlMjHaBSSm3d6wNg0rAUemULW/ZGbpZJorA0z90Y8yrwapvv5nbQdtKxh6WUUs227PXypTyhINvBsH5OSj7z4DMGRwd1d6ULhyml4pzPGLbt93JaP/8NRqf1c1Dthr1Hup5znszst/yATepdSqn2nhxyBxs//Ee39imvMbgbYWCBfyw6sMCf5Pcf9TGgwPr49I6v3kHqa93r287sl9yHDo11BEqpHhqaOZDDjuOwdiuRX1mlf4TeN9dfgukT+Hmw0tetvgfmDSTNcVy39rEz+5VlXnnF/1JK2c4rh9ayxvtpt/YJJvG+uf505UoVcjOEg5XdK8us3dP9vu3MfiP3Bx/0/7zootjGoZTqtgdLl1LpOcS4buxzsNLgEOiV3XzxtG+uUNbNkfvSzUtxeA4Rek3IxGO/5L5sWawjUEpFUVmlj4JsIcXZnNz75Arb93cvuScb+5Vlevf2v5RSSeFgpWmqtwf1zXVwpNrg8eqMmY7YL7kvXux/KaWSwsFKH31yW6eqvrmCAQ5VaXLviCZ3pVTcqq03VLsJOXKH7s+YSSb2q7krpWzr2VPvorjkNcvty6r8ybvtyL15OqT1kftdZ99F6ivW+7Y7Te5KqagZ4OrLHkeO5XnuR6r9ybsgu/XIPS9TcDrgaI315N43qy9pjhzL7e3OfmUZpZRtPX9wJW95tltuX1HrT955Wa2Tu4iQlymUdyO5r/y0e33bnY7clVJR8/i+5VR6D3GOxfZNyT2j/QJheRlCRZ315L5823Ic3kOEXPEwAenIXSkVt8prDdkuWs1xD8rPkqbkr9rT5K6UilsVtYb8zNDL+uZlChW1OlumI5rclVJxq7zWhCzJgL8sU1UHXp+O3kPR5K6UilsVtYa8rNBpKj/LfyNTpZZmQrLfBVVdW0Yp21o2/B7WbVxhqa0xxp/cOxm5A1TUGY7L7vp490y6h9S/Wes7Edgvueu6MkrZVu/UPPIlw9I895p68PjosOYe/L7c4sg9z5VHmmRYDdX27FeW0eUHlLKtxQde5++erZbadjTHPSj4vdUZM6/vsN53ItDkrpSKmsUHXuc1bzeTexdlGasj99d3WO87EdivLLNqVawjUEpFQTBp53cwck9xCtku6yP3ZGO/kbtSKil0NXIPbtPkHpr9kvvChf6XUiqhVbkNKQ7ISOu4TW6GUNWNJQiSif2S+4oV/pdSKqFVuQ05GYJIxyP3nAyhyq3JPRT71dyVUrb16ukLeK/4b5baVtUZsl0dJ3aAbJf15L5g8gLSXrDWdyKw38hdKWVbmU4XLkm11Lbabchxdd4mxyXUuMFnYQkCV4r1vhOBJnelVNQ8tvdlXvR8aKltldvayN3gv+GpKy9/bL3vRKBlGaVU1CwtW0Wl9xAXWmhbHai5dya4vcpC21W7V+HwHrIaqu3pyF0pFXe8PkNNvb/s0png9mq9qNqOJnelVNypdvt/dl2W8f/UGTPtaXJXSsWd4Ejc6shd57q3p8ldKRV3qiwm92wty3TIfhdUdW0ZpWxrVeHvWbvuxS6X/G1K7l1cJE1LEVyp1soyv5/ye9KWvmg1VNvTkbtSKu4ER+LZXcxz97eRphq9ama/5K5ryyhlWwv3PM9zjRu7bBesoXd1QRX8pRsrNffnN1nrO1HYryzz7ruxjkAp1UMrDr9Lpe8Q07poV+U2uFIh1dl1cre6BMG7pe/i8CXPPHf7JfcXXoh1BEqpCLNyA1NQToZwoNwX4Yjsx35lGaVUwqtyQ3a6xeTu0nnuoVhK7iIyRUS2icgOEZkTYvtMEflIREpEZI2IDAt/qAE/+5n/pZRKWDUW1pUJykoX3I3g8WqCb6nLsoyIOIFHgfOAUmC9iCw3xmxp0ew5Y8wTgfZTgYeAKRGIV2vuStlYhiOdepxdtquuN3wpz3pyB//iYXmZHbdLT0nHYaHvRGFl5D4O2GGM2WWMaQCWABe3bGCMqWzxMQvQX6FKqXZeG/lbHky/uMt23Rq5u4LJvfO089vJ1vpOFFYuqPYD9rT4XAqc2baRiNwK3AGkAV8PdSARuQm4CWDgwIHdjVUplQR8PkNtQ/OIvCvB2nyN1t1bsTJyD3WG251FY8yjxpivALOBn4c6kDHmKWNMkTGmqE+fPt2LVClle/d+9gx/alzXaZvawO2rVkfuwRudqrsYuT/zQdd9JxIryb0UGNDic39gXyftlwDfPpaglFKJ6Z9HN7LBV9ppm+DdqVZH7s01986T+8b9XfedSKwk9/XAKSIyWETSgOnA8pYNROSUFh+/BXwSvhCVUskkmKSz0q21b0ruugRBK13W3I0xHhGZBbwBOIGnjTGbRWQ+UGyMWQ7MEpHJQCNwFLgmkkErpRJXU3K3WJbJSAOHdF2WSTaW7lA1xrwKvNrmu7kt3v8wzHEppZJU04M6LJZlRISsdL2g2pb9lh8oKIh1BEqpHipIzQWqO20THLlbvaAK/tJMVyP33PRcHF30nUjsl9x1bRmlbOuF4fO7XM89eEE1M836cbNc0uUF1flfm6/ruSulVKzU1Bsy08Dh6N7IvaY+gkHZkP2Su64to5Rt/WzXH3i8cW2nbWrqjeWLqUFWau5/2NB134nEfmWZw4djHYFSqoferdxMZRdrqtd0Y0XIoGwLNffNZZt1Pfe49tRTsY5AKRVB1fXG8g1MQdkuoa4BvD6DsxvlnERmv7KMUiqh+RcN694+zYuHRSAgm7Jfcr/pJv9LKZWQejJyt7oEQTKxX1lm+/ZYR6CU6qH+6X0oq+54nQCf8a8Imdnt5O7/2dlF1T5ZfXAcSp41CuyX3JVStvWX0+7udJ57XQMY0/0LqlZG7neffTdp+3Weu1JKRV0wOWdaXDQsqOXTmJSfJnelVNTcvmMRv294p8PttT1YegCsjdwXreu870SjZRmlVNSUVO+g0nQ81zw48u5uzT040q/tJLnvOLIDRyd9JxoduSul4kZNNx/UEeR0CK5UXfa3JU3uSqm4UdPQvQd1tJSVLtRqzb2JJnelVNzo6cg9uI+O3JvZr+Y+ZEisI1BK9dCQzP58Ue3pcHtNPaQ6IS2lB8nd1XnNvX9uf5yHOu470dgvuevaMkrZ1lND7mRtecfz3Gt6cHdqUFa6sO+or8Ptd46/k7RSneeulFJR50/uPdtX13RvzX7JXdeWUcq2btq+kN82rOxwe+0xjtxr6g3GhC7NLFzbed+Jxn5lGX2GqlK2tb22lEpT3uH26nooyO5Zcs9MB48XGjyQntp+e2llKY5O+k409kvuv/lNrCNQSkVIbb1hYEHPCgrB9Whq6w3pqbqmu/3KMkqphHUsNffgXa3VWncH7JjcL7vM/1JKJRSP1+BupNvPTw1qOXJXdizL6DNUlbKtwuyT2VcdelttYH5kTy+oBteX6WjxsJN7nYwjeZaWsWFyV0rZ1u9PnsXaI6HnuTct95vW89kyLY/T1qxxs0jbrfPclVIqqoJJ+VjmuYPW3IM0uSuloua/tt7HPQ1vhtwWXFemu2u5B2WkgUM6rrnft7rjvhORlmWUUlFTWl9GpQlddA/eXdrTmruIkJnecVmmrKYMRwd9J6K4Su6NjY2UlpbidnfyENtf/tL/c+vW6ASVpFwuF/379yc1NcTdIEpFQHNZpudz1IN3qao4S+6lpaXk5OQwaNAgRDr4D+wIVJKGDo1eYEnGGMPhw4cpLS1l8ODBsQ5HJYmePj+1pax0oaaTsWEyiauau9vtpqCgoOPErqJCRCgoKOj8Lyilwqym3pCR5n+qUk/pyL1ZXI3cga4Te1ZWdAJJcvoLVkXCV3OHU1qzLeS2mvpjK8mAf6bNFxWhk/vwPsNxHA7ddyKKq5G7Jf37+18RUF5ezmOPPWap7bx581i4cCEAc+fO5a233uqw7csvv8yWLVs63P7EE0/wzDPPADBp0iSKi4t7HPO+ffuYNm2a5f2ViqbfnHQjN6eOD7mtxt3zFSGDOhu53zi2474Tkf2SewR1J7m3NH/+fCZPntzh9s6Su8fjYebMmVx99dXd7hfax3ziiSeybNmyHh1LqVg6lnVlgrJc/ueo+jpY9jeZ2C+579jhf0XAnDlz2LlzJ4WFhfzkJz9pt/2+++5jyJAhTJgwgW3bmv+8mzFjRlNCnTNnDsOGDWPkyJHceeedrF27luXLl/OTn/yEwsJCdu7cyaRJk7j99tspKiri4YcfbvVXAMCzzz5LYWEhI0aMYN26dQDt2owYMYLdu3e3i3n37t2MGDEC8F/DuPbaazn99NMZPXo0b7/9NgCLFy/m0ksvZcqUKZxyyin89Kc/Df/JVCqEyzbP5a76V0NuO5anMAVlpQsGqAtxC+zctzvuOxHFXc096J5XNrNlX2X7DQ2B/2ppZd0+5rATc/nlRcM73L5gwQI2bdpESUlJu20bNmxgyZIllJSU4PF4GDNmDGPHjm3V5siRI7z00kt8/PHHiAjl5eXk5+czdepULrzwwlblkoaGhqbyy7x581odp7a2lpKSEt555x2uu+46Nm3aZDnm3bt3N2179NFHAfjoo4/4+OOP+cY3vsH27dsBKCkp4f333yc9PZ2hQ4dy2223MWDAgA77USocDjdWUknoC/Xhqrn7j9X+F0VlfSWODvpORPYbuael+V9Rtnr1ai655BIyMzPJzc1l6tSp7drk5ubicrm44YYbePHFF8nMzOzweFdeeWWH277zne8AcM4551BZWUl5ec8eMLBmzRquuuoqAE499VS+/OUvNyX3c889l7y8PFwuF8OGDeOzzz7rUR9KhYMxxp+Qe3h3alDT+jJuLcvE7ci9sxF2rHQ1gyQlJYV169bxz3/+k2XLlrFo0SJWrgz9WK+sTmb9tO1HREhJScHna374r5Vpih09bgwgPb25uOl0OvF4kuep8Cr+1HvA6+v5ujJB2V0sHpZMLI3cRWSKiGwTkR0iMifE9jtEZIuIfCgi/xSRL4c/1IBt2/yvCMjJyaGqqirktnPOOYeXXnqJuro6qqqqeOWVV9q1qa6upqKigm9+85v87ne/44MPPujyuKE8//zzgH/knZeXR15eHoMGDWLjxo0AbNy4kU8//dRSzH/9618B2L59O59//jlD9eYvFYfCcXcqND+wQx+UbSG5i4gTeBS4ABgGfEdEhrVp9j5QZIwZCSwD7g93oNFQUFDAWWedxYgRI9pdUB0zZgxXXnklo0aN4oILLuCMM85ot39VVRUXXnghI0eOZMKECTz00EMATJ8+nQceeIDRo0ezc+fOLuNwuVyMHj2amTNn8sc//hGAyy67jCNHjjB8+HAWLVrEkCFDuoz5lltuwev1cvrpp3PllVeyePHiViN2paLt3OPGMNbRfipzsIxyzDV3V+B4IUbuY04I3Xeiks7+dAcQka8C84wx5wc+/wzAGBPyYaYiMhpYZIw5q7PjFhUVmbbzubdu3cppp53WecTBUbuOQCPO0n8PFZ+WLIHjj491FCGtXfciDVdc2uq7rXu9/PYVN7MvcnFaP2ePj93oNdz4h1ouPSOVqWPbX5tLW/oi48ddGmLPOHHgAEyf3mkTEdlgjCnq6lBWyjL9gD0tPpcGvuvI9cBrFo6rlFLAsa/lHpTqFNJSoLZBa+5WLqiG+jsp5JkTkf8CioCJHWy/CbgJYODAgRZDVEoligs+nE15/QF+Q+vRc1NyP8bZMuC/qBpq8bDZb83GUX+Ad4njkXsYWRm5lwItJ0D3B/a1bSQik4G7ganGmJCXM4wxTxljiowxRX369OlJvEopG6vz1VOPt9334aq5g39VyeoQNfd6T+i+E5WV5L4eOEVEBotIGjAdWN6yQaDO/iT+xH4w/GEqpRJZdT2kOCA9DJOzs126MiRYSO7GGA8wC3gD2AosNcZsFpH5IhK8k+cBIBv4PxEpEZHlHRxOKaXaqXb7b2AKx2qk2S6hWm9isnYTkzHmVeDVNt/NbfG+41WzlFKqCzX1huwwzdLNSheqk2eVgQ7Zb/mBvDz/Kw4sXryYWbNm9WjflouNdXb8ffvaXd7oVMuFw9p+/9xzz3XrWEqF24UFX2W8Y1C776vdpscPxm4rWJZpO837q/1D952o7Jfcjz8+bufvhltPkntHNLmreHDngCv5buqYdt+HY0XIoKx0/1IG7sbW3185InTficp+yT3CnnnmGUaOHMmoUaOaFt165ZVXOPPMMxk9ejSTJ0/miy++aLffF198wSWXXMKoUaMYNWoUa9eubTeKXrhwYbsVIMG/HvwZZ5zBiBEjuOmmmzDGsGzZMoqLi/ne975HYWEhdXV1bNiwgYkTJzJ27FjOP/989u/fD/hXrAz2G1wJsq05c+awevVqCgsL+d3vfheGM6VU+FS7CevI3X/M5K67x3dynzSp/WvcOP8r+LnFGudMmgSLF/vfHzrUft8ubN68mfvuu4+VK1fywQcf8PDDDwMwYcIE3nvvPd5//32mT5/O/fe3X13hBz/4ARMnTuSDDz5g48aNDB9ufeGzWbNmsX79ejZt2kRdXR0rVqxg2rRpFBUV8de//pWSkhJSUlK47bbbWLZsGRs2bOC6667j7rvvBuDaa6/lkUceaVrLJpQFCxZw9tlnU1JSwo9+9CPLsSkVTpNKbmdW/YutvjPGUB3GkXtHi4fd/nr7vhNZ3K4K2aHU1IgdeuXKlUybNo3evXsD0KtXLwBKS0u58sor2b9/Pw0NDQwePDjkvsFH5TmdTvLy8jh69Kilft9++23uv/9+amtrm9aPueiii1q12bZtG5s2beK8884DwOv1csIJJ1BRUUF5eTkTJ/rvG7vqqqt47TW9QVjZR4MHPF7IdoXneFlNI/fwHM+u4ju5r1rV8/a9e3d7f2NMyKlYt912G3fccQdTp05l1apVIUsroVhZptftdnPLLbdQXFzMgAEDmDdvXsh2xhiGDx/Ou+++2+r78vJyfZi1srXgDUdhK8sERu6hbmRKJvFdlgmlsdH/ioBzzz2XpUuXcvjwYcD/ZCWAiooK+vXzL6fz5z//ucN9H3/8ccA/qq6srORLX/oSBw8e5PDhw9TX17NixYp2+wUTee/evamurm41g6blcr5Dhw6lrKysKbk3NjayefNm8vPzycvLY82aNQBNS/y21d1lh5WKluow3p0Kzb8kkv2BHfZL7rt2+V8RMHz4cO6++24mTpzIqFGjuOOOOwD/Y/Auv/xyxo4d21Syaevhhx/m7bff5vTTT2fs2LFs3ryZ1NRU5s6dy7hx45g8eTKnnnpqu/3y8/O58cYbGTFiBOeff36rpYRnzJjBzJkzKSwsxOv1smzZMmbPns2oUaMoLCxk7dq1APzpT3/i1ltvpbCwsMMHdIwcOZKUlBRGjRqlF1RVXAmuvR6ukXtw8bFkH7l3ueRvpOiSv/FPl/y1sThd8vexvS+z67MSLvzuvKbv1u308Ng/6rn38gwGFIRnvDnzjzWcfWoK3zur+c6olz9+mZSNJSwcP6/jHWMtjEv+xnfNXSmVUG7p923W7vXR0OK7YFkmXBdU/ceSdk9j+vap3ybtQ1/oHRKQJnelVNTUet24TWOrenC4HrHXkn8JgtZVCbfHjc9E5npdPLJfzV0pZVvf/GgOdza0fv5wtduQlgJpKeFL7tmu9jcxzXmrfd+JLO6Se6yuAajW9L+Dipaa+vBdTA3SZX/jLLm7XC4OHz6siSXGjDEcPnwYlyuMRVClOlDtDt/dqUHZIcoyySauau79+/entLSUsrKyjhsdOOD/6UueCyOx4HK56N8/eZ4Ur2Knym3IDfM4InhB1eszOB3JeZNfXCX31NTUkLf2t3Lzzf6f3b17VSkVl6rrDL37hreIkJMRXF8GcjPCemjbiKvkbsmMGbGOQCnVQzOOn8IntRtafVfpNuSEueYePF5VnSE3kOinnDwF55ENne2WUDS5K6WiZsbxU1j7eW3TPHeP11DX0DzSDpfg8apa1N2nnDyFtI21Ye0nntkvuR865P/ZwTIASqn4daixgnJTR2bgc/CiZyRH7kEV7gpSTV1Y+4ln9kvu06b5f2rNXSnbmbb5l1Q2HOIhvgdAVWAB1PAndwLHb07uv1z1SxwNh/hmoO9EZ7/k/uMfxzoCpVSYVLnDu9xvUPB4VUk8HdJ+yb3NQyyUUvYVLJvkhrnmnuIUMtL8M3GSVVzdxGTJtm3NK0MqpWwtUiN38Jd6dORuJ9//vv+n1tyVsr3gyD2cK0IG5WRocldKqai4+cSpbNuxrulzlduQlU5E7iLNcQlHqpuT+9ShU0k5sq6TPRKLJnelVNRc2ffrrN1d3jTPvToCNzAF5biEzw81L1Py9cFfJ219eUT6ikf2q7krpWxrj/sgX/ian+VbVWfCfgNTUE6GUOk2TQsRHqxp3Xei0+SulIqaqz7+Nfc2/qPpc5XbRORiKvjr+B4v1HuQUMrFAAAPmUlEQVT8n3+9unXfiU6Tu1IqZqrc4b+BKSjUXarJRJO7UiomfMa0Wtgr3ILHrdTkrpRS0VPtBp+BvMzIJPfgcStqNbkrpVTUBEfUeREauecl+cjdflMhdW0ZpWzrx/2vYOsn7wLNI+rcCI3cg7Nwgv1cMfwKUta8G5G+4pH9kruuLaOUbV3UezwFuw7QQHPSjVRZJsUpZLua+xk/YDxpzgMR6Sse2a8so2vLKGVb22o/5zPfUQAqIrRoWEu5GdLUz+cVzX0nA/sl9+9/v3l9GaWUrXx/+0M80Pg24B9RpzghMy1y/eVlStPI/aF3m/tOBvYry/z617GOQCkVBpV1hrwMQSRyI/e8DGHXQV/XDROQ/ZL7+PGxjkApFQYVtb6I1duDWo7ck439yjJr1/pfSilbq6yLbL0d/Mev94C7MfkSvKXkLiJTRGSbiOwQkTkhtp8jIhtFxCMi08IfZgt33eV/KaVsLVojd4DKJBy9d5ncRcQJPApcAAwDviMiw9o0+xyYATwX7gCVUonj51++imtSivD5DFXu6IzcwT8z56qR/r6ThZWa+zhghzFmF4CILAEuBrYEGxhjdge2JeeVC6WUJZOPG0um8zMOug0mgksPBLVcgqDopLGkOT+LaH/xxEpZph+wp8Xn0sB3SinVLSXVO9juK2u+gSnCI/eWyX3HEX/fycJKcg919ntUwBKRm0SkWESKy8qS5yQrpfxu37GIRxpXc7TGn0KOy45wWcYlOB1wtMawaJ2/72RhJbmXAgNafO4P7OtJZ8aYp4wxRcaYoj59+vTkEEqpBBBM7r2yIpvcHQ4hP1Oa+ksmVpL7euAUERksImnAdGB5ZMNSSiWyI9UGkcjX3AGOyxKO1CTf5cAuk7sxxgPMAt4AtgJLjTGbRWS+iEwFEJEzRKQUuBx4UkQ2RzJopZS9Ha0x5GcKTkd0kvvR6uQbuVu6Q9UY8yrwapvv5rZ4vx5/uUYppbp0tMbHcREuyQT1yhY+/NyQcVxUuosb9lt+QNeWUcq2fj34Bj7a8i/+XGM4IT86N8gfl+Wg3gM3nn49Oe+8E5U+44H9kruuLaOUbY3PGwHO7RypMgzvF6WRe+AvhOMzhnOS85Oo9BkPdG0ZpVTUrK3YxHrvF7gbIz8NMihY/tmw9yM+8u6PSp/xwH4j9+C6MqtWxTQMpVT33fXp/1DWeAS4ml5ZUSrLBH6JvPTJ0/TyHOb73BqVfmPNfsn9ySdjHYFS6hg0Gn9Sj9bIPT9TEKDRG5Xu4ob9kvvQobGOQCl1DDyBanC0ZsukOIXcTOELb3JNh7Rfzf2VV/wvpZQtNRoHIpG/O7WlgmzRkXvce/BB/8+LLoptHEqpHmnASd8sIcUZveTeN1doqCb0SlkJyn4jd6WUbf3+5Fmc5LmaPrnRzbJ9ch3kum9kVso5Ue03luw3cldK2VZh9snUeXtxcm50x5V9coVU30n0ojSq/caSjtyVUlHz98PF7Jet9MmJ8sg9x0Gdo4R/eZJnnrsmd6VU1Mzf/RcqUpbQNwYj94qUJbzs+3dU+40lTe5Kqahx+/zTEaNdc++VJYg0z7FPBsnzL1VKxVx9YDpinyiP3B0OIdUpNCRRykuef6lSKubcPoMDQ44r+n2nOqHROKPfcYxocldKRY3bC2niQyT6E87TUqABB8Ykx52q9psKqWvLKGVbJ3pncaI5GJO+v/2V21m+oZEv6g3HuxL/bib7jdyHDtX1ZZSyoRqP4Yi7H6c5s2PS/8gTvkyq6c8nSfLIPfsld11bRilb2lHjo9bxH8odxTHpf6/7PWod/+GT6uR4WLb9kvuDDzavL6OUso3tVT4qU15irYnNo+5WfPJ/1KS+mDTJ3X4192XLYh2BUqoHdtQYHAJpxC65puPV5B63eveOdQRKqR7YXu3D5fDfTBQr6eJle7UPY0xMZuxEk/3KMosX+19KKVvZXuUjI8bTzNPFS6UHvqhP/IuqmtyVUhF3qN6w123ISontaNmF/xbZDyoSvzRjv+SulLKdDyr8SXXhoDn8IvW8mMRw19l3MT/9XFIESso1uSul1DErqfDhFJjc+3i+5MiJSQx9s/rS35HFaTkOSioS/5l7mtyVUhFXUu5lSLaDV468zVue7TGJYeWnK3nLs53CfAcfVvjwJvgyBJrclVIR5TOGkgofhXkOHt+3nJe9m2ISx/Jt/r4L8xzUeGFHgt+pqsldKRVRn1QbqjwwOj8+0s3ofP+UneKjiV2aiY+zrZRKWP865E+iZ/eOj+V2B2cK/VzSFFei0uSulIqot8s8DM0WTnDFR7oRESb2cfLvw14afIlbmomPs62USkjVHkPxUR+T+sTXzfCTejup8ULx0cSdEhlfZ9wKXVtGKdtYc8hLo4GJgZLMsuH3sG7jipjEcs+ke0j9m7/v8QVOUsX/V8X4gvgoF4Wb/UbuvXvr+jJK2cQL+zz0ToMzjvOnmt6peeRLRkxiyXM1952dIkzs7eTl/V48CVqasV9y1+UHlLKFg/U+VpZ5uaxfKqkO/7IDiw+8zt89W2MSz+s7Wvd9Rf8UyuoNbyfohVVN7kqpiHhhrwevgSv6NVd/Fx94nde8sUvuLfv+Wh8nvdOEJXs8MYkn0uxXc1+1KtYRKKW6UOUx/OHTRiYUOPhKdnyOIVMdwncHpPDIzkY+rPAyMi+xau/xedaVUrb21KeNHGmEnwxJi3UonbpxcCq9UmHBtgZMgi1HYL/kvnCh/6WUiksl5V6e2NXIhcc7GRXno+GcFOGHJ6ex9oiPvyRYecZScheRKSKyTUR2iMicENvTReT5wPb/iMigcAfaZMUK/0spFXf21Pq4paSevunCvcPSYx2OJVcNTGFSbyfztzawOoEurnaZ3EXECTwKXAAMA74jIsPaNLseOGqMORn4HfDbcAeqlIpvq8o8XPKemxqv4cnR6RyX1v7BHK+evoCFaRfFIDpYMDl03w4Rfj8ynZOyhOs2uPnT7saEmB5pZeQ+DthhjNlljGkAlgAXt2lzMfDnwPtlwLmS6A8oVCrJeXyGndU+ntvTyBX/qWPGhnpyU+GFMzMY0UE5JtPpwiWpUY7Uz5XScd/5acLSMzMYX+Dkno8b+MaaOh7b1cCHFV7cXnsmeiuzZfoBe1p8LgXO7KiNMcYjIhVAAXAoHEEqpY7N3jofv9nW0GW7lmnMGPABPuN/NRio9xpqvHC0wXCw3tAY2GFQpvDzU9O4emAKaY6Ox3WP7X2ZXZ4PuZBLj+0f1AMvf/wyKZ4PGd9B33mpwuKx6bz+hZc/7m7k/u2N3E8jAvRJFwrShJwUSHcIaQ5wCDjFP0JuOZS1Mqq9sn9qxBdSs5LcQ8Xa9leZlTaIyE3ATQADBw600LVSqkcKCuDAgaaP9W5hy1Frd4ZKi5+OQPJyCKQKpIuhrxOGZBj65vo4Kd3HmCwfX0n3+RPcwc6PvXTvm1Q53BRVH+i8YQS8ufNNMhzuVuelLcFff75gEHzRKKyvdrKj3sG+BuGIR6huFKp8QqMBb4tffsFkZ3WMfzS9GjwhLuAWFHTr39QZK8m9FBjQ4nN/YF8HbUpFJAXIA460PZAx5ingKYCioiJ7/q2jlB2c1/o5pScBK2MTSWuLnyAHmD5ietS7fqL4CcgCplvr+0vAhRGNKLKs1NzXA6eIyGARSQOmA8vbtFkOXBN4Pw1YaRJt0qhSStlIlyP3QA19FvAG4ASeNsZsFpH5QLExZjnwR+BZEdmBf8Qe/V/LSimlmlhafsAY8yrwapvv5rZ47wYuD29oSimlekpiVT0pKioyxcXFMelbKaXsSkQ2GGOKumpnv+UHlFJKdUmTu1JKJSBN7koplYA0uSulVALS5K6UUglIk7tSSiUgTe5KKZWANLkrpVQC0uSulFIJKGZ3qIpIGfBZTDpvrzfxu/Z8PMcG8R2fxtYz8RwbxHd80Yjty8aYPl01illyjyciUmzldt5YiOfYIL7j09h6Jp5jg/iOL55i07KMUkolIE3uSimVgDS5+z0V6wA6Ec+xQXzHp7H1TDzHBvEdX9zEpjV3pZRKQDpyV0qpBJTUyV1E7hWRD0WkRETeFJETA9+LiDwiIjsC28fEILYHROTjQP8viUh+4PtBIlIXiLlERJ6Il9gC234WOG/bROT8GMR2uYhsFhGfiBS1+D7m562z+ALbYnru2sQyT0T2tjhf34xlPIGYpgTOzQ4RmRPreNoSkd0i8lHgfMX+SUTGmKR9Abkt3v8AeCLw/pvAa4AA/w/4Twxi+waQEnj/W+C3gfeDgE0xPm8dxTYM+ABIBwYDOwFnlGM7DRgKrAKKWnwf8/PWRXwxP3dt4pwH3Bnr89UiHmfgnJwEpAXO1bBYx9Umxt1A71jHEXwl9cjdGFPZ4mMWELwAcTHwjPF7D8gXkROiHNubxhhP4ON7QP9o9t+ZTmK7GFhijKk3xnwK7ADGRTm2rcaYbdHsszs6iS/m5y7OjQN2GGN2GWMagCX4z5nqQFIndwARuU9E9gDfA4IP/e4H7GnRrDTwXaxch/8viaDBIvK+iPxLRM6OVVABLWOLt/PWVjydt7bi8dzNCpTenhaR42IcSzyen7YM8KaIbBCRm2IdTEqsA4g0EXkLOD7EpruNMX8zxtwN3C0iPwNmAb/EX45pK+zTirqKLdDmbsAD/DWwbT8w0BhzWETGAi+LyPA2f4XEKra4OW8hROW8HUN8UTl3rTrsJE7gceDeQAz3Ag/i/0UeK1E/Pz1wljFmn4j0Bf4hIh8bY96JVTAJn9yNMZMtNn0O+Dv+5F4KDGixrT+wL8yhdRmbiFwDXAicawJFPWNMPVAfeL9BRHYCQ4CwXsDpSWzEyXnrYJ+onLfA8bsdH1E6dy1ZjVNE/gCsiGQsFkT9/HSXMWZf4OdBEXkJfykpZsk9qcsyInJKi49TgY8D75cDVwdmzfw/oMIYsz/KsU0BZgNTjTG1Lb7vIyLOwPuTgFOAXfEQG/7zNl1E0kVkcCC2ddGMrSPxcN66EFfnrs01pkuATbGKJWA9cIqIDBaRNGA6/nMWF0QkS0Rygu/xTzqI6TlL+JF7FxaIyFDAh3+FypmB71/FP2NmB1ALXBuD2BbhnznxDxEBeM8YMxM4B5gvIh7AC8w0xhyJh9iMMZtFZCmwBX+55lZjjDeagYnIJcB/A32Av4tIiTHmfOLjvHUYXzycuzbuF5FC/KWP3cD3YxgLxhiPiMwC3sA/c+ZpY8zmWMbUxpeAlwL/P6QAzxljXo9lQHqHqlJKJaCkLssopVSi0uSulFIJSJO7UkolIE3uSimVgDS5K6VUAtLkrpRSCUiTu1JKJSBN7koplYD+P0Hd4TL/Id4LAAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "print('总体的均值为: ',data.mean())   #假装我们不知道\n",
    "print('空假设H0是：总体的均值是',data.mean() + 5000,' \\n')\n",
    "\n",
    "sample_data=np.random.choice(a=data,size=80) #从中随机抽取80个做样本\n",
    "\n",
    "t_statistic,p_value=stats.ttest_1samp(a=sample_data,popmean=data.mean() + 5000)\n",
    "print('从样本构造的t统计量 = ',t_statistic)    #t的绝对值越大，p值越小，可参见下面的t-分布图\n",
    "print('单样本双边检验的 p = ',p_value)\n",
    "\n",
    "#画一下样本容量为80时的t分布曲线\n",
    "df=80-1\n",
    "\n",
    "x = np.linspace(stats.t.ppf(0.00000001,df),stats.t.ppf(0.99999999,df),80)  #ppf函数是CDF的逆函数，用来求分位点\n",
    "plt.plot(x, t.pdf(x, df))  #pdf生成概率密度函数表\n",
    "plt.plot((t_statistic,t_statistic),(-0.01,0.4),'-.r')\n",
    "str_legend=('t distribution','calculated t')\n",
    "plt.legend(str_legend)\n",
    "\n",
    "\n",
    "x_025=stats.t.ppf(0.025,df) #注意：同样选取alpha=0.5，做双边test时要给左、右两侧各分配0.25\n",
    "plt.plot((x_025,x_025),(-0.01,0.4),'--g') #这根线是双边检验的左阈值\n",
    "x_975=stats.t.ppf(0.975,df)\n",
    "plt.plot((x_975,x_975),(-0.01,0.4),'--g') #这根线是双边检验的右阈值\n",
    "#print(x_975)\n",
    "\n",
    "rect1=plt.Rectangle((x_025,0),x_975*2,0.5,color='g',alpha=0.25)\n",
    "plt.gca().add_patch(rect1)\n",
    "\n",
    "rect2=plt.Rectangle((x_975,0),5,0.5,color='r',alpha=0.25)\n",
    "plt.gca().add_patch(rect2)\n",
    "rect3=plt.Rectangle((x_025,0),-5,0.5,color='r',alpha=0.25)\n",
    "plt.gca().add_patch(rect3)\n",
    "\n",
    "#plt.ylim(-0.02,0.5)\n",
    "plt.text(x_025,0.4,'accept region')   #图片上不支持中文\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 59,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "p =  1.7371608633897112e-47 \n",
      "\n",
      "\u001b[1;31m 拒绝 \u001b[0m H0,即总体的均值不等于 6195.837314814815 ，此时错误拒绝H0的概率为 1.7371608633897112e-47 小于显著性水平\n"
     ]
    }
   ],
   "source": [
    "print('p = ',p_value,'\\n')\n",
    "alpha=0.05\n",
    "if p_value>=0.05:\n",
    "    print('\\033[1;31m 接受 \\033[0m H0')\n",
    "else:\n",
    "    print('\\033[1;31m 拒绝 \\033[0m H0,即总体的均值不等于',data.mean() + 5000,'，此时错误拒绝H0的概率为',p_value,'小于显著性水平')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "由显著性检验的原理可知，如果假设H0正确，那么他被错误拒绝的概率不应该大于$\\alpha$的值，即0.5。     \n",
    "而不论是从计算得出的p值还是从自由度79的t-分布的图像中，都可以很容易的看出，实际数据与理论假设H0的偏离达到了“显著”的程度。    \n",
    "由中心极限定理，可以认为几乎不可能出现错误拒绝的情况，因此认为假设是错误的。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 双样本检验\n",
    "利用双样本检验可以将样本集A的统计均值与样本集B的统计均值比较，比如，随机抽取两组样本数据，判断两组样本来源的总体均值是否相等/相近：    \n",
    "从同一个数据集中抽取两次数据，从理论上来说，应该大概率可以接受来源相等的假设："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 60,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "第 0 组样本的均值为 1073.250125\n",
      "第 1 组样本的均值为 1314.162875\n"
     ]
    }
   ],
   "source": [
    "my_sample={}\n",
    "for n in range(2):\n",
    "    my_sample[n]=np.random.choice(a=data,size=80) #从中随机抽取80个做样本\n",
    "    print('第',n,'组样本的均值为',my_sample[n].mean())   "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 61,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "t =  -0.9579774741861459\n",
      "p =  0.3409967487395512\n",
      "\u001b[1;31m 接受 \u001b[0m the H0: 两样本来源的总体均值相等\n"
     ]
    }
   ],
   "source": [
    "#能否下结论说两组样本来源的总体其均值不相等呢？\n",
    "#需进行two sample t-test\n",
    "#H0: 两样本均值相等\n",
    "alpha=0.01   #设置显著性水平\n",
    "t_statistic,p_value=stats.ttest_rel(a=my_sample[0],b=my_sample[1]) \n",
    "#sample size相等的双样本均值比较\n",
    "print('t = ',t_statistic)\n",
    "print('p = ',p_value)\n",
    "if p_value<=alpha:\n",
    "    print('\\033[1;31m 拒绝 \\033[0m H0：两样本来源的总体均值相等 ')\n",
    "else:\n",
    "    print('\\033[1;31m 接受 \\033[0m the H0: 两样本来源的总体均值相等')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "当然，也可以重新抽取不同的年份作为数据集，判断一下是否随机到了相同的年份："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 62,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "第1组样本的统计区间为 1978-1982 统计均值为 3934.2737499999994\n",
      "第2组样本的统计区间为 1978-1982 统计均值为 3624.7\n",
      "t =  0.4553568045685773\n",
      "p =  0.6501016298002539\n",
      "\u001b[1;31m 接受 \u001b[0m the H0(两样本来源的总体均值相等)\n",
      "可能来自相同的年份\n"
     ]
    }
   ],
   "source": [
    "temp_year_1 = random.randint(0,11)\n",
    "temp_year_2 = random.randint(0,11)\n",
    "data_1 = data_gdp[time_periods[temp_year_1]]\n",
    "data_2 = data_gdp[time_periods[temp_year_2]]\n",
    "new_sample={}\n",
    "my_sample[0]=np.random.choice(a=data_1,size=80) #从中随机抽取80个做样本\n",
    "my_sample[1]=np.random.choice(a=data_2,size=80) #从中随机抽取80个做样本\n",
    "print('第1组样本的统计区间为',time_periods[temp_year_1],'统计均值为',my_sample[0].mean())   \n",
    "print('第2组样本的统计区间为',time_periods[temp_year_2],'统计均值为',my_sample[1].mean())   \n",
    "alpha=0.01   #设置显著性水平\n",
    "t_statistic,p_value=stats.ttest_rel(a=my_sample[0],b=my_sample[1]) \n",
    "#sample size相等的双样本均值比较\n",
    "print('t = ',t_statistic)\n",
    "print('p = ',p_value)\n",
    "if p_value<=alpha:\n",
    "    print('\\033[1;31m 拒绝 \\033[0m H0(两样本来源的总体均值相等)\\n应该来自不同的年份 ')\n",
    "else:\n",
    "    print('\\033[1;31m 接受 \\033[0m the H0(两样本来源的总体均值相等)\\n可能来自相同的年份')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 卡方检验（随堂练习：Titanic-2）\n",
    "数据在各类上的分布是否与给定的概率分布一致？    \n",
    "舱位等级对旅客的存活率有影响吗？仿照按照性别划分的课堂demo，有如下判断："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 63,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "各个舱位的频率为 [0.24242424 0.20650954 0.55106622]\n"
     ]
    }
   ],
   "source": [
    "mask1=titanic['Pclass']==1\n",
    "mask2=titanic['Pclass']==2\n",
    "mask3=titanic['Pclass']==3\n",
    "p=np.array([sum(mask1)/(sum(mask1)+sum(mask2)+sum(mask3)),sum(mask2)/(sum(mask1)+sum(mask2)+sum(mask3)),sum(mask3)/(sum(mask1)+sum(mask2)+sum(mask3))])\n",
    "print('各个舱位的频率为',p)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 64,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "总体存活人数为 342\n"
     ]
    }
   ],
   "source": [
    "mask_survived=titanic['Survived']==1\n",
    "my_population=titanic.loc[mask_survived,'Pclass']\n",
    "# print(type(my_population))\n",
    "pop_size=my_population.count()\n",
    "print('总体存活人数为',pop_size)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 65,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "如果每个舱位获救机会均等，那么三个舱位分别的存活人数是 [ 82.90909091  70.62626263 188.46464646]\n"
     ]
    }
   ],
   "source": [
    "sample=my_population\n",
    "E=pop_size*p\n",
    "print('如果每个舱位获救机会均等，那么三个舱位分别的存活人数是',E)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 66,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "实际的存活人数是  [136  87 119]\n"
     ]
    }
   ],
   "source": [
    "mask1=sample==1\n",
    "mask2=sample==2\n",
    "mask3=sample==3\n",
    "my_set1=sample[mask1]\n",
    "my_set2=sample[mask2]\n",
    "my_set3=sample[mask3]\n",
    "O=np.array([len(my_set1),len(my_set2),len(my_set3)])\n",
    "print('实际的存活人数是 ',O)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 67,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "t= 63.39624559772318 \n",
      "p= 1.7126955990497913e-14\n",
      "我们 \u001b[1;31m 拒绝 \u001b[0m 各个舱位具有相同死亡率的假设.\n"
     ]
    }
   ],
   "source": [
    "chi_squard,p_value=stats.chisquare(f_obs=O,f_exp=E)\n",
    "print('t=',chi_squard,'\\np=',p_value)\n",
    "\n",
    "a=0.05\n",
    "df=2\n",
    "if p_value<=a:\n",
    "    print('我们 \\033[1;31m 拒绝 \\033[0m 各个舱位具有相同死亡率的假设.')\n",
    "else:\n",
    "    print('我们 \\033[1;31m 接受 \\033[0m 各个舱位具有相同死亡率的假设')\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 卡方检验\n",
    "最后，回到AQUASTAT数据集，我们来判断一下不同的区域的经济平均发展水平是否一致吧（虽然用腿想都知道答案）      \n",
    "首先，输出包含的区域，这里借鉴了[pycon-2017-eda-tutorial](https://github.com/cmawer/pycon-2017-eda-tutorial)的做法，使用一个字典将区域重新划分为简化版的地理区域："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 68,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array(['World | Asia',\n",
       "       'Americas | Central America and Caribbean | Central America',\n",
       "       'Americas | Central America and Caribbean | Greater Antilles',\n",
       "       'Americas | Central America and Caribbean | Lesser Antilles and Bahamas',\n",
       "       'Americas | Northern America | Northern America',\n",
       "       'Americas | Northern America | Mexico',\n",
       "       'Americas | Southern America | Guyana',\n",
       "       'Americas | Southern America | Andean',\n",
       "       'Americas | Southern America | Brazil',\n",
       "       'Americas | Southern America | Southern America', 'World | Africa',\n",
       "       'World | Europe', 'World | Oceania'], dtype=object)"
      ]
     },
     "execution_count": 68,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "my_data.region.unique()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 69,
   "metadata": {},
   "outputs": [],
   "source": [
    "simple_regions ={\n",
    "    'World | Asia':'Asia',\n",
    "    'Americas | Central America and Caribbean | Central America': 'North America',\n",
    "    'Americas | Central America and Caribbean | Greater Antilles': 'North America',\n",
    "    'Americas | Central America and Caribbean | Lesser Antilles and Bahamas': 'North America',\n",
    "    'Americas | Northern America | Northern America': 'North America',\n",
    "    'Americas | Northern America | Mexico': 'North America',\n",
    "    'Americas | Southern America | Guyana':'South America',\n",
    "    'Americas | Southern America | Andean':'South America',\n",
    "    'Americas | Southern America | Brazil':'South America',\n",
    "    'Americas | Southern America | Southern America':'South America', \n",
    "    'World | Africa':'Africa',\n",
    "    'World | Europe':'Europe', \n",
    "    'World | Oceania':'Oceania'\n",
    "}"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 70,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "['Asia' 'North America' 'South America' 'Africa' 'Europe' 'Oceania']\n"
     ]
    }
   ],
   "source": [
    "data_new_region = pd.read_csv('aquastat.csv.gzip', compression='gzip') # 好像会和前面起冲突，就重新读取一遍吧\n",
    "data_new_region.region = data_new_region.region.apply(lambda x: simple_regions[x])\n",
    "new_region = data_new_region.region.unique()\n",
    "print(new_region)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "然后，将不同区域的数据储存到不同的DataFrame中，然后把人均GDP数据切分出来，最后随机出一个特定年份，对该统计区间内的数据进行操作："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 71,
   "metadata": {},
   "outputs": [],
   "source": [
    "def subregion(data, region):\n",
    "    return data[data.region==region]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 72,
   "metadata": {},
   "outputs": [],
   "source": [
    "data_div_region={}\n",
    "data_div_region_gdp={}\n",
    "for n in range(6):\n",
    "    data_div_region[n] = subregion(data_new_region, new_region[n])\n",
    "    data_div_region_gdp[n] = slice_by_variable(data_div_region[n], 'gdp_per_capita')\n",
    "    data_div_region_gdp[n] = data_div_region_gdp[n].dropna(axis=0)\n",
    "# print(data_div_region_gdp)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 73,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\u001b[1;31m统计区间： 1973-1977 \u001b[0m\n"
     ]
    }
   ],
   "source": [
    "data_final={}\n",
    "temp_year = random.randint(0,11)\n",
    "print('\\033[1;31m统计区间：',time_periods[temp_year],'\\033[0m')\n",
    "for n in range(6):\n",
    "    data_final[n] = data_div_region_gdp[n][time_periods[temp_year]]\n",
    "# print(data_final)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "由于统计数据和统计方便的缘故，我们设定一个“发达指标”如下：     \n",
    "<u>如果一个国家的人均GDP超过了全球所有国家的中位数，那我们就认为这个国家是“发达国家”，如果全球发展水平一致的话，那么所有地区的“发达国家”占比都应该在50%左右。</u>  \n",
    "同时，由于大洋洲就三个国家，容易引起极端情况，因此就不再考虑大洋洲国家的数据。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 74,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\u001b[1;31m对于统计区间： 1973-1977 ,其全球人均GDP中位数为： 919.4 \u001b[0m\n"
     ]
    }
   ],
   "source": [
    "mid = slice_by_variable(my_data, 'gdp_per_capita')[time_periods[temp_year]].median()\n",
    "print('\\033[1;31m对于统计区间：',time_periods[temp_year],',其全球人均GDP中位数为：',mid,'\\033[0m')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "首先统计不同地区的国家占总国家数量的频率："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 75,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "各个地区的频率为 [0.19047619 0.18095238 0.1047619  0.35238095 0.17142857]\n"
     ]
    }
   ],
   "source": [
    "sum_all = len(data_final[0])+len(data_final[1])+len(data_final[2])+len(data_final[3])+len(data_final[4])\n",
    "p=np.array([len(data_final[0])/sum_all,len(data_final[1])/sum_all,len(data_final[2])/sum_all,len(data_final[3])/sum_all,len(data_final[4])/sum_all])\n",
    "print('各个地区的频率为',p)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "然后，根据“发达国家”的定义，统计出各个地区的发达国家的数量与全球所有发达国家的数量："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 76,
   "metadata": {},
   "outputs": [],
   "source": [
    "for n in range(5):\n",
    "    data_final[n] = data_final[n][data_final[n]>=mid]\n",
    "# print(data_final)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 77,
   "metadata": {},
   "outputs": [],
   "source": [
    "sum_all = len(data_final[0])+len(data_final[1])+len(data_final[2])+len(data_final[3])+len(data_final[4])\n",
    "q=np.array([len(data_final[0])/sum_all,len(data_final[1])/sum_all,len(data_final[2])/sum_all,len(data_final[3])/sum_all,len(data_final[4])/sum_all])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "`E`代表猜想全球发展水平一致的情况下，各个地区应该有的发达国家的数量      \n",
    "`O`代表实际情况下，各个地区的发达国家的数量"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 78,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[ 9.71428571  9.22857143  5.34285714 17.97142857  8.74285714]\n",
      "[11. 10.  7.  5. 18.]\n"
     ]
    }
   ],
   "source": [
    "E = p * sum_all\n",
    "O = q * sum_all\n",
    "print(E)\n",
    "print(O)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "代入检验公式，检验假设是否成立"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 79,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "t= 19.912839169031116 \n",
      "p= 0.0005195777805893799\n",
      "我们 \u001b[1;31m 拒绝 \u001b[0m 各个地区“发达程度”相同的假设\n"
     ]
    }
   ],
   "source": [
    "chi_squard,p_value=stats.chisquare(f_obs=O,f_exp=E)\n",
    "print('t=',chi_squard,'\\np=',p_value)\n",
    "\n",
    "a=0.05\n",
    "df=4\n",
    "if p_value<=a:\n",
    "    print('我们 \\033[1;31m 拒绝 \\033[0m 各个地区“发达程度”相同的假设')\n",
    "else:\n",
    "    print('我们 \\033[1;31m 接受 \\033[0m 各个地区“发达程度”相同的假设')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "当然，这种判断方法是很粗糙的，有很多没有考虑到的因素，比如说，是否应该根据人口数量进行加权，计算出各个地区根据人口分布应该有的“发达国家”数量，而非简单地按照国家数量计算。    \n",
    "同时，简单地按照人均GDP的中位数进行判断是否准确也是一个问题。     \n",
    "（不过结论倒是对的，毕竟不用判断也知道这个问题的答案）"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 总结\n",
    "通过这次作业学习了区间估计和假设检验的方法，练习了如何通过数据科学的方法验证自己对大数据的猜想。     \n",
    "卡方检验也可以完成对数据关联性的一些简单检验，比如使用各个国家的水资源数据进行加权运算，可以得到“发达国家数”按照水资源多寡的分布，再与实际的发达国家进行对比，就可以验证国家“发达”与水资源多寡之间的关联。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**当初开始做的时候不知道要做回归分析，现在发现选的这个数据集几乎没有什么数据可以用来做回归……    \n",
    "所以只好在回归部分重新选了个数据集来进行分析，这里就选用波士顿房价这个经典的dataset了，希望老师不要介意。**"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Regression\n",
    "By Minaduki 2019.    \n",
    "项目的Git存储库：https://git.nju.edu.cn/Minaduki/datascience     \n",
    "This is a regression assignment using the Boston House Prices dataset.  "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 80,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import pandas as pd\n",
    "import seaborn as sns\n",
    "import matplotlib.pyplot as plt\n",
    "from scipy import stats\n",
    "from scipy.stats import t\n",
    "import math\n",
    "import statistics\n",
    "import random\n",
    "import sklearn\n",
    "import sklearn.datasets as datasets\n",
    "from sklearn.preprocessing import StandardScaler\n",
    "from sklearn.model_selection import train_test_split\n",
    "from sklearn.linear_model import LinearRegression\n",
    "from sklearn import metrics\n",
    "from sklearn.metrics import r2_score,mean_absolute_error,mean_squared_error\n",
    "from sklearn.preprocessing import PolynomialFeatures"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "首先，载入数据集，将数据整理成DataFrame的样式，方便观察。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 81,
   "metadata": {},
   "outputs": [],
   "source": [
    "boston = datasets.load_boston()\n",
    "data = pd.DataFrame(data=boston.data,columns=boston.feature_names)\n",
    "data['PRICE'] = boston.target"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 82,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>CRIM</th>\n",
       "      <th>ZN</th>\n",
       "      <th>INDUS</th>\n",
       "      <th>CHAS</th>\n",
       "      <th>NOX</th>\n",
       "      <th>RM</th>\n",
       "      <th>AGE</th>\n",
       "      <th>DIS</th>\n",
       "      <th>RAD</th>\n",
       "      <th>TAX</th>\n",
       "      <th>PTRATIO</th>\n",
       "      <th>B</th>\n",
       "      <th>LSTAT</th>\n",
       "      <th>PRICE</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <td>0</td>\n",
       "      <td>0.00632</td>\n",
       "      <td>18.0</td>\n",
       "      <td>2.31</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.538</td>\n",
       "      <td>6.575</td>\n",
       "      <td>65.2</td>\n",
       "      <td>4.0900</td>\n",
       "      <td>1.0</td>\n",
       "      <td>296.0</td>\n",
       "      <td>15.3</td>\n",
       "      <td>396.90</td>\n",
       "      <td>4.98</td>\n",
       "      <td>24.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>1</td>\n",
       "      <td>0.02731</td>\n",
       "      <td>0.0</td>\n",
       "      <td>7.07</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.469</td>\n",
       "      <td>6.421</td>\n",
       "      <td>78.9</td>\n",
       "      <td>4.9671</td>\n",
       "      <td>2.0</td>\n",
       "      <td>242.0</td>\n",
       "      <td>17.8</td>\n",
       "      <td>396.90</td>\n",
       "      <td>9.14</td>\n",
       "      <td>21.6</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>2</td>\n",
       "      <td>0.02729</td>\n",
       "      <td>0.0</td>\n",
       "      <td>7.07</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.469</td>\n",
       "      <td>7.185</td>\n",
       "      <td>61.1</td>\n",
       "      <td>4.9671</td>\n",
       "      <td>2.0</td>\n",
       "      <td>242.0</td>\n",
       "      <td>17.8</td>\n",
       "      <td>392.83</td>\n",
       "      <td>4.03</td>\n",
       "      <td>34.7</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>3</td>\n",
       "      <td>0.03237</td>\n",
       "      <td>0.0</td>\n",
       "      <td>2.18</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.458</td>\n",
       "      <td>6.998</td>\n",
       "      <td>45.8</td>\n",
       "      <td>6.0622</td>\n",
       "      <td>3.0</td>\n",
       "      <td>222.0</td>\n",
       "      <td>18.7</td>\n",
       "      <td>394.63</td>\n",
       "      <td>2.94</td>\n",
       "      <td>33.4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>4</td>\n",
       "      <td>0.06905</td>\n",
       "      <td>0.0</td>\n",
       "      <td>2.18</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.458</td>\n",
       "      <td>7.147</td>\n",
       "      <td>54.2</td>\n",
       "      <td>6.0622</td>\n",
       "      <td>3.0</td>\n",
       "      <td>222.0</td>\n",
       "      <td>18.7</td>\n",
       "      <td>396.90</td>\n",
       "      <td>5.33</td>\n",
       "      <td>36.2</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "      CRIM    ZN  INDUS  CHAS    NOX     RM   AGE     DIS  RAD    TAX  \\\n",
       "0  0.00632  18.0   2.31   0.0  0.538  6.575  65.2  4.0900  1.0  296.0   \n",
       "1  0.02731   0.0   7.07   0.0  0.469  6.421  78.9  4.9671  2.0  242.0   \n",
       "2  0.02729   0.0   7.07   0.0  0.469  7.185  61.1  4.9671  2.0  242.0   \n",
       "3  0.03237   0.0   2.18   0.0  0.458  6.998  45.8  6.0622  3.0  222.0   \n",
       "4  0.06905   0.0   2.18   0.0  0.458  7.147  54.2  6.0622  3.0  222.0   \n",
       "\n",
       "   PTRATIO       B  LSTAT  PRICE  \n",
       "0     15.3  396.90   4.98   24.0  \n",
       "1     17.8  396.90   9.14   21.6  \n",
       "2     17.8  392.83   4.03   34.7  \n",
       "3     18.7  394.63   2.94   33.4  \n",
       "4     18.7  396.90   5.33   36.2  "
      ]
     },
     "execution_count": 82,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data.head()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "根据资料，查得各个column条目的意思分别如下：\n",
    "- CRIM：城镇人均犯罪率。\n",
    "- ZN：住宅用地超过 25000 sq.ft. 的比例。\n",
    "- INDUS：城镇非零售商用土地的比例。\n",
    "- CHAS：查理斯河空变量（如果边界是河流，则为1；否则为0）。\n",
    "- NOX：一氧化氮浓度。\n",
    "- RM：住宅平均房间数。\n",
    "- AGE：1940 年之前建成的自用房屋比例。\n",
    "- DIS：到波士顿五个中心区域的加权距离。\n",
    "- RAD：辐射性公路的接近指数。\n",
    "- TAX：每 10000 美元的全值财产税率。\n",
    "- PTRATIO：城镇师生比例。\n",
    "- B：1000（Bk-0.63）^ 2，其中 Bk 指代城镇中黑人的比例。\n",
    "- LSTAT：人口中地位低下者的比例。\n",
    "\n",
    "**而target（对应DataFrame中的PRICE）则是自住房的平均房价，以千美元计。**"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "首先，针对单变量的情况进行回归，这里就选择DIS（到Boston五个中心区域的加权距离）作为自变量。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 83,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/usr/local/lib/python3.5/dist-packages/ipykernel_launcher.py:1: FutureWarning: Method .as_matrix will be removed in a future version. Use .values instead.\n",
      "  \"\"\"Entry point for launching an IPython kernel.\n",
      "/usr/local/lib/python3.5/dist-packages/ipykernel_launcher.py:2: FutureWarning: Method .as_matrix will be removed in a future version. Use .values instead.\n",
      "  \n"
     ]
    }
   ],
   "source": [
    "x = data.loc[:, 'DIS'].as_matrix(columns = None)\n",
    "y = data.loc[:, 'PRICE'].as_matrix(columns = None)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 84,
   "metadata": {},
   "outputs": [],
   "source": [
    "x_train,x_test,y_train,y_test = train_test_split(x,y,test_size = 0.25,random_state = 0)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 85,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "LinearRegression(copy_X=True, fit_intercept=True, n_jobs=1, normalize=False)"
      ]
     },
     "execution_count": 85,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "x_train = np.array([x_train]).T\n",
    "y_train = np.array([y_train]).T\n",
    "linreg=LinearRegression()\n",
    "linreg.fit(x_train,y_train)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 86,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "f(x) =  [18.00637367] + [1.21692759] x\n"
     ]
    }
   ],
   "source": [
    "print('f(x) = ',linreg.intercept_,'+',linreg.coef_[0],'x')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 87,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "x = np.array([x]).T\n",
    "plt.scatter(x,y,s=10,alpha=0.5,c='green')\n",
    "plt.plot(x,linreg.predict(x),c='blue',linewidth='1')\n",
    "plt.xlabel(\"X\")\n",
    "plt.ylabel(\"Y\")\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "可以看出，单个变量显然是没有办法准确预测的。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "下面将全部的特征都纳入考虑范围："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 88,
   "metadata": {},
   "outputs": [],
   "source": [
    "x = boston.data\n",
    "y = boston.target\n",
    "x = StandardScaler().fit_transform(x)\n",
    "x_train,x_test,y_train,y_test = train_test_split(x,y,test_size = 0.25,random_state = 0)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 89,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "LinearRegression(copy_X=True, fit_intercept=True, n_jobs=1, normalize=False)"
      ]
     },
     "execution_count": 89,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "linreg=LinearRegression()\n",
    "linreg.fit(x_train,y_train)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 90,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "1.截距： 22.408169191821973\n",
      "2.回归系数：\n",
      " [-1.00370907  1.02503227 -0.03665348  0.60760114 -1.80935864  2.64024976\n",
      " -0.19544319 -3.01913746  2.08555333 -1.90153122 -2.13388046  0.78042648\n",
      " -3.56721085]\n",
      "3.MSE:  29.79055916423847\n",
      "4.R_square： 0.6353620786674625\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>回归系数</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <td>RM</td>\n",
       "      <td>2.640250</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>RAD</td>\n",
       "      <td>2.085553</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>ZN</td>\n",
       "      <td>1.025032</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>B</td>\n",
       "      <td>0.780426</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>CHAS</td>\n",
       "      <td>0.607601</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>INDUS</td>\n",
       "      <td>-0.036653</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>AGE</td>\n",
       "      <td>-0.195443</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>CRIM</td>\n",
       "      <td>-1.003709</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>NOX</td>\n",
       "      <td>-1.809359</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>TAX</td>\n",
       "      <td>-1.901531</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>PTRATIO</td>\n",
       "      <td>-2.133880</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>DIS</td>\n",
       "      <td>-3.019137</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>LSTAT</td>\n",
       "      <td>-3.567211</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "             回归系数\n",
       "RM       2.640250\n",
       "RAD      2.085553\n",
       "ZN       1.025032\n",
       "B        0.780426\n",
       "CHAS     0.607601\n",
       "INDUS   -0.036653\n",
       "AGE     -0.195443\n",
       "CRIM    -1.003709\n",
       "NOX     -1.809359\n",
       "TAX     -1.901531\n",
       "PTRATIO -2.133880\n",
       "DIS     -3.019137\n",
       "LSTAT   -3.567211"
      ]
     },
     "execution_count": 90,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "print(\"1.截距：\", linreg.intercept_)\n",
    "print(\"2.回归系数：\\n\", linreg.coef_)\n",
    "y0_pred = linreg.predict(x_test)\n",
    "print(\"3.MSE: \",  metrics.mean_squared_error(y_test, y0_pred))\n",
    "print(\"4.R_square：\",metrics.r2_score(y_test, y0_pred))\n",
    "Coef1_df = pd.DataFrame(linreg.coef_,index=boston.feature_names,columns=[\"回归系数\"])\n",
    "Coef1_df.sort_values(by=\"回归系数\",ascending=False)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "结果依然不算是很理想，可以看见MSE的值相当地高。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "尝试使用二次多项式拟合，看看能否提升一下预测性能。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 91,
   "metadata": {},
   "outputs": [],
   "source": [
    "poly_reg = PolynomialFeatures(degree = 2)\n",
    "x_train_poly = poly_reg.fit_transform(x_train)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 92,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "LinearRegression(copy_X=True, fit_intercept=True, n_jobs=1, normalize=False)"
      ]
     },
     "execution_count": 92,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "linereg_2 = LinearRegression()\n",
    "linereg_2.fit(x_train_poly, y_train)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 93,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "3.2362\n",
      "32.20775438625614\n",
      "0.6057754892935535\n"
     ]
    }
   ],
   "source": [
    "y_pred_p = linereg_2.predict(poly_reg.fit_transform(x_test))\n",
    "print(metrics.mean_absolute_error(y_test, y_pred_p).round(4))\n",
    "print(metrics.mean_squared_error(y_test,y_pred_p))\n",
    "print(metrics.r2_score(y_test,y_pred_p))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "效果似乎反而更差了。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "使用三次多项式呢？"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 94,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "63.7433\n",
      "29545.579296599408\n",
      "-360.6393556053302\n"
     ]
    }
   ],
   "source": [
    "poly_reg = PolynomialFeatures(degree = 3)\n",
    "x_train_poly = poly_reg.fit_transform(x_train)\n",
    "linereg_3 = LinearRegression()\n",
    "linereg_3.fit(x_train_poly, y_train)\n",
    "y_pred_p = linereg_3.predict(poly_reg.fit_transform(x_test))\n",
    "print(metrics.mean_absolute_error(y_test, y_pred_p).round(4))\n",
    "print(metrics.mean_squared_error(y_test,y_pred_p))\n",
    "print(metrics.r2_score(y_test,y_pred_p))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "在针对测试集的部分，MSE高得一塌糊涂，可以认为应该是发生了过拟合，结果不可靠。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 小结\n",
    "虽然整体从MSE的值来说，回归操作是失败的，误差很大，几乎不能用来预测，但是从定性的角度，也可以得到一些结论：   \n",
    "在多变量线性回归的结果中，可以看见，不同的变量对应的回归系数不同，其中大于零的变量有：房间数、公路接近指数、用地面积、是否靠近河流，黑人比例（负相关），而小于零的变量则有：年龄、犯罪率、NO浓度、税率、学生/老师比例、到市中心距离、人口地位低下比例，根据回归系数的定义，回归系数为正的变量对总价有正面的影响，而回归系数为负的变量则有负面的影响，在本次回归的结果中，除了非零售商用土地比例的回归系数过小无法判断其影响之外，其他的变量对房价的影响基本上与常识相符合。   \n",
    "同时通过回归系数（绝对值）的大小也可以判断影响程度的大小，比如地段阶级和距离市中心距离就会极大地影响房价。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## P.s.\n",
    "不过回归也不一定要针对价格进行回归，我决定再进行一次垂死挣扎，对人口地位低下者的占比和平均房间数进行一次线性回归："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 95,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/usr/local/lib/python3.5/dist-packages/ipykernel_launcher.py:1: FutureWarning: Method .as_matrix will be removed in a future version. Use .values instead.\n",
      "  \"\"\"Entry point for launching an IPython kernel.\n",
      "/usr/local/lib/python3.5/dist-packages/ipykernel_launcher.py:2: FutureWarning: Method .as_matrix will be removed in a future version. Use .values instead.\n",
      "  \n"
     ]
    }
   ],
   "source": [
    "x = data.loc[:, 'LSTAT'].as_matrix(columns = None)\n",
    "y = data.loc[:, 'RM'].as_matrix(columns = None)\n",
    "x_train,x_test,y_train,y_test = train_test_split(x,y,test_size = 0.25,random_state = 0)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 96,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "f(x) =  [7.05306125] + [-0.05901175] x\n"
     ]
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXwAAAEKCAYAAAARnO4WAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4zLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvnQurowAAIABJREFUeJztnXt4VNW5/z9rZjK5TUImBAgk3BOCCopIUbxVWi1gsae1ekpre1rrra3a9rR6pPairdVqoT2n53iOLb14qRRaPfZYo4D2Jy2iqQiKBoQQJAkk3BIyud/msn5/7OxhZjKTTEImM8m8n+eZBzKzZ+81e2Z/19rf9b7vUlprBEEQhLGPJd4NEARBEEYGEXxBEIQkQQRfEAQhSRDBFwRBSBJE8AVBEJIEEXxBEIQkQQRfEAQhSRDBFwRBSBJiKvhKqW8opfYopfYqpb4Zy2MJgiAI/WOL1Y6VUvOAW4DFQA+wWSn1ota6MtJ78vLy9IwZM2LVJEEQhDHHrl27GrTWE6LZNmaCD5wF/ENr3QGglPo78Cngp5HeMGPGDHbu3BnDJgmCIIwtlFI10W4bS0tnD3C5Umq8UioDuBqYGrqRUupWpdROpdTO+vr6GDZHEAQhuYmZ4Gut9wGPAK8Am4F3AU+Y7dZprRdprRdNmBDVXYkgCIIwBGI6aau1/q3WeqHW+nKgEYjo3wuCIAixJZYePkqpiVrrk0qpacC1wJJYHk8QBEGITEwFH/hfpdR4wA3crrV2xfh4giAIQgRiKvha68tiuX9BEAQheiTTVhAEIUmItaUzpqloqKCysZLi3GJK8kri3RxBEIR+EcEfIhUNFTz02kNYLVa8Pi/3XnaviL4gCAmNWDpRUNFQQemBUioaKvx/ry9fT1tPG9PGTcNqsVLZKBGngiAkNjLCH4DQkfyqeavYuGcjbT1t7D6+GwCH3UFxbnGcWyoIgtA/IvgDUNlYidViZdq4aRxuPkxZbRlWi5X5k+YDcM7Ec7hh/g1i5wiCkPCIpTMAxbnFeH1eDjcfxuvzsqRwif9vh90hYi8IwqhBRvgDUJJXwr2X3RsUjTPLOUuicwRBGHWI4EdBSV5JkLCH/i0IgjAaEEtHEAQhSRDBFwRBSBJE8AVBEJIEEXxBEIQkQQRfEAQhSRDBFwRBSBIkLHOYkQqagiAkKkkr+LEQZqmgKQhCIjOmBT+SqMdKmEPr7lQ2VorgC4KQMIxZwe9P1GMlzKF1d6SCpiAIicSYFfz+RD1Wwhyu7k40iO8vCMJIMGYFvz9RDxRmqzq9eIkptmciwIOtsyO+vyAII8WYFfyBRtvm36GLm9Q017C5cjO5GbkjIsDi+wuCMFKMWcGHgUfbgWJbfqKcNa+vwWqxUtVUxfKi5XS4O2IuwOL7C4IwUoxpwR+IQLFt6mrCme5kctZkqlxV7G/YT0FWQcwFeKi+vyAIwmBRWut4t8HPokWL9M6dO0f0mKZfb1VWNu7ZiNVixdXpYlnRMpbOWCoCLAhCQqOU2qW1XhTNtkk9wodg20dWshIEYSyT9IIfiKxkJQjCWEYEPwISGy8IwlgjpoKvlPpX4GZAA+XAjVrrrlgeMxoGEnOJjRcEYSwSM8FXShUAXwfO1lp3KqX+BKwCnojVMfsj3ORsJDGX2HhBEMYisbZ0bEC6UsoNZABHY3y8sASO2Ktd1TjTncyfND+imEtsvCAIY5GYCb7Wuk4ptRY4DHQCL2utX47V8fojcMTe3NVMU1dTv2IusfGCIIxFYmnpOIF/AmYCTcAzSqnPa62fDtnuVuBWgGnTpsWkLYEjdofdwc0Lb8arvf2KuUTsCIIw1oilpXMlUKW1rgdQSj0HXAwECb7Weh2wDozEq1g0JHTEDvgLpoFE5AiCkBzEUvAPAxcppTIwLJ2PAiObRhuAOWIPjcBZNW/VgJO4giAIY4GYLWKutX4TeBZ4GyMk00LvSD5eVDRUsL58PW09bUwbNw2rxUpZbZnf37darEEjf0EQhLFETKN0tNb3AffF8hjRYo7s23ra2H18NwAOu4MlhUvYuGcj5SfKcXW6sCprn/eJ3SMIwlhgzGTaDiTMZqTO/EnzAThn4jncMP8GAGY6Z/LnfX8m057Jr3b+ilnOWWHtH7F7BEEYzYwJwY9GmEMjdUyxf+i1hzhw6gCHXIcozC7kZPtJtlZvpSSvRBKwBEEYU4wJwY9GmMPF1pceKMVqsTI+fTxKKbq93VgCpjVGMgFLrCNBEGLNmBD8aIU5NLbefF+qLZVxqePId+QzKXMSS2cs9W8/EglYYh0JgjASjJkFUIY6Qg6ssTNQMlasKD1QynP7nvPfoVx71rWsnLNyRNsgCMLoJCkXQBlqZmzg+0zxN58fTvrrkKR2jyAII8GYEfxoiSS8sbRVBtq31O4RBGEkSCrB7094YxmRE+2ksgi9IAixJGaZtolIZWMlbT1tdHm6aOtpC8qqjaWtIpaNIAiJQFKN8K3Kyu7ju7EoCz7tC8qqjaWtIpaNIAiJQFIJvld7WZC/gFRbKt2ebrzaG/R6LG0VsWwEQYg3SSX4xbnFOOwOrBYrKZaUuFsrkmwlCMJIMiYEP1rhTCRrRZKtBEEYaUa94A9WOAOjcgL/HmmkTo8gCCPNqBf8wQrnpspNrH1jLTlpOTjsjriNrCVyRxCEkWbUC/5ghLOioYI1r6/hSMsRGjoaKMotGvLIeiAbKfB1oM+2iWQvCYKQHIx6wR+McFY2VuJMd3Kq6xQdPR00dTUNaWQ9kI0U+HpjRyNKKZzpzj7bSuTOmSGT3oIwOEa94EP0wmlG6RQ5i3B1urjr4ruiFopAcRnIRgp9XaE4L/888eqHEZn0FoTBMyYEP1qGaqOEW/i8PxspaLGVFAdKqai9+niMWkfjSFkmvQVh8CSV4MPQbJRQcfFqb78dR2jHYu5jIEGNx6h1OI85kh2HTHoLwuBJOsGPhlDhCicuA3Uc4V4fKBQ0HqPW4TrmSHdWMuktCINHBD+ESMJ172X3srV6a9T7CBSiaMUwHqPW4TpmPDormfQWhMEhgh9Cf8JVdqQMq8VK2ZEyv2hHI+6B+yw/Uc768vXcMP+GqNbdjTXDdUyxWAQh8RHBDyGScIXrCIB+xd3cztxn+Ylydh/f7X9fuJG+OWqtaKig9EDpoCeXhyLcwzFSFotFEBKfpBH8wYjhkqlLAFg6Y6l/23AdgVlf36y+GSjuoX7/vZfdy/ry9QDMnzS/X9tjKH54IoQpisUiCIlNUgh+f2IYmhEbuN3SGUv9+yjJK2HVvFWU1ZaxpHAJJXklbKvZxhtH3sButWOz2LAqa9gIHXOkfsP8G3jotYcGtD2G4odLmKIgCAORFIIfSQxDO4IlU5eEtW0qGyuxKisb92zEajH+BdhQvgG71Y5SitnO2f76+oG2TGhHE43tMRQ/XDx0QRAGIikEP1pfHgjazqqsfsGuaaohJy3Hb8eU1ZbhTHeS05VDR08HXt1XZMN1NCvnrBwwFr+ysZJLp13KkZYj/ruJwNeiif2X0b0gCKEkheBHEsPQjmDpjKUsnbE0bAmF5q5mXJ0u/7ZLCpdQ01TjL9Owat6qPnH2kTqaSMJt3hG09bSx+/huFuQvoKaphlnOWUDfCWJZCF0QhMEQM8FXSpUAfwx4ahbwA631f8TqmP0RTgwjdQSB2wUK9uXTLyc/K98/mTvLOauP3RMoxuH23998gtnBpNpSsSgLqbZUrBarvyMRj14QhDPBEqsda60rtNYLtNYLgAuADuDPsToe4A9lrGioiPr1krySiDaLKdiLCxYb9XBaDlN2pCzo9eLcYspqy2jraWPauGlBAh1u/4F3DaHbmncE3Z5ufNpnrLvbe2cw1jz6gb4rQRCGn5GydD4KfKC1ronVAaIpWbz6r6tp62nDYXfw8JUPRzVCLskr8ZdVzkjJYH/DfrZWbw0arZsWDIDD7uhXjPsT7sA7Aquy+ucFzHaOFY8+EUJIBSEZGSnBXwVsiOUBBgpL3Fq9lfIT5WSlZlHlqgoS7YFE9FjrMV4//DqtPa1k2DJ49v1n/a9ZLVbmT5pPa3crdqudVfNWDVhjZ6DCa5HePxIe/UgUQItVCOlorPopCCNJzAVfKWUHPgF8J8LrtwK3AkybNm3Ix4nK8lDB/0Yz0txUuYkHtj1Ac1czXd4uSgpLONBwgMd2PsaEjAk4Uhw0dzXzgesDslKzWLdrHTXNNUFJW6HEUrjPRPRGauQdC3tK7hoEYWBi5uEHsAJ4W2t9ItyLWut1WutFWutFEyZMGNIBbrsN5k4o4dnPP45917e468K+F/vSGUuZN2Ee4zPGM2/CPH80TiQ/3aT0QClNnU2kWFPw+Xzsq9+Hq9tFj6eH6qZqFkxewDkTz2FB/gImZ02m/EQ5z77/LA+99tCI+9Om6D2377khHT+a8zEcmHc515517bAJ80i1XRBGMyMh+J8lxnbOgw8aot/RYeFXD8zj3IISlIJ586C0FLQ2ROaRqx7hmxd9k0eueiRi2eNQJmROQCuNT/uw2+xMHTcVZ6qTNFsaaMh35HPD/Btw2B2GwCqYmzc3LqITKHptPW2sL18ftehXNFRQ21IbFHoay4nh/ibLh8JYm9QWhFigtNax27lSGcARYJbWunmg7RctWqR37tx5xsd9+224917YsiX4+Q9f1can79jFxy7OB4g4ORpIRUMFX/y/L3K87Tj5jnzu+/B9rNu1rs/kb0VDBVurt7K5cjNWi5WmribuuvguVhSv6LO/SDH4Z+o/h4vjd9gdA46iQ9fgXV68vF9LKlGJhYcv8wJCoqOU2qW1XhTNtjH18LXWHcD4WB4jHAsXwubNZhvg+efh2//Wzd9fcfD3Vz7s327u1bXM//TzPPCJ2yOKL8Bkx2Sy7Fk47A5mOWfx8JUPh43dL8krYfq46ax5fQ3OdCcb92xklnNWUKbsPa/cQ5u7DUeKw3+nMVz+82CLtJkE3hkAFGYXjkpxG+65kUjf13AjnYowUoz5TFul4JOfBNvZr/DcvueYkj6TZ55ycvCZm9n/0kfZ/9JHeQawWuFb3z9J4UefZ2vtSzjTnf76Os50J+fln+evZb+kcEnE43m1lxnOGWEjULZWb2VP/R6y7FlU91T7I4WGM2qlJK8k6iJtJmKHhCfS9zWcyGSzMJKMecE3MUXtaGcVZ318F2ev/H840520uzJIf/NHPPnLXNbcPxHuvwW4hexJDSz8wjNceD3+WvZvHX2LQ65DPLH7CT405UNh7ZJw4mnaPdtqttHj6QE7oPu2rfxEOU1dTViV9Yw+62Dr6kgdnn7QIf9GwWBG7CNZ5VTuJISYeviDZbg8/EiEWjWBHn5tSy076nbQdWwWf3nsQ7S/tyzovQXnVuC+4m4yZ+2hob2By6dfzkTHRK4961pWzlnZ73FW/3U15SfKcfvc9Hh7mOmcyaTMSUHJX5sqN/HDv/0Qi8XCxIyJg7YP5GI+zXCdi6Ek6w12xD5SI3y5kxi7JIyHn2iE83jNi8DV6UJrTe5kuHL1TpYXV3HF9KW8/rcMHro/m0PvlcB7f/G/b0tmM5ff9wNqC2qpaKgI2m/gcUoPlHKi/QQ+fGSkZFCQXcCVs67ss8RhTXMNDZ0NZNmz2FO/hw17NrBoyqKoRGtT5Sb/vEE0k7RjmcEI20AdQ0leSdj5mv4Y7Ih9pO6uZL0EAZJM8EMJnaxcXLCYwuzCoEJn22zfY8EP2nAffYueHk3by3fT/urX8bSP49V/+wWv9u7rosvaKf1zJuNDpqitykptSy1NnU1opZmSNcUv9qF3AqZt0OPpYcvBLX5baCDRWvvGWo60HOFU1ymKnEVBF/NYG/kP9HmiFbZoO4bBTgQPZT5kJDKoZZ5GgCQX/MCLoLGj0f9cuOqVqdZUzi0sofuLL/DpR+wUZhfy9Bt/5fW136Z271T+8VomeXmn9/2tb8GX766grLaMuePnYrfaaexs5Ppzrg8bmbNq3irmT5rvXzJxStaUqEZjlY2V5KTl0NDRQEdPB65OV1AZ5jO5jU+0ziKazxOtsMVqxJuo8yGJ2i5hZElqwTcvgq3VW9lycAs76nZQdqTMLySh1StTbamMzxjvX/owddwzXPXgfX7xaa0u4fLLobMTfv5z+PnPS4AfAbDoa//J2Vfu8r83VHC82uu3D8xyy9GMxopzi3HYHRTlFtHU1RRUl/9MRC0RPd9oPk9oAbrQNQpMYjXiHa58ilgI80jcSQiJTVILPgRXwwwVkpK80+vYLshfgNvnDlqBqs+IKQ86OowLdn35ejb973h2/vc3ANj5P19n5//AU4DNBn94cT6uzt9ypPkIDrvDL07mvsxa++Eu+lBBMDut463HefHAi+Rm5PrvGoYqaono+UYr0mY7++uwYjHiHY5OMjB5ztXp4u5L7u6TvCcIQyXpBR8iC8mvd/2aR3c8isPu4Hjb8aAVqMwOIZwYmxdsY/FurnryRfY17AOfjbZNq2l69TY8HvjnZdMxlwdIn7aHhm//iOLpjj4LqIQSTlQANlduZv+p/ZzqOMXHZn+MVFsqXu0dsqglouc7GJGO9m5gODux4egkKxsraetp46DrIB09Hax9Y21Q8p4gnAki+IQXkk2Vm/j+q9+nw9OBz+djXNo4Um2p/ho1oROvgeGdZslkALvV8Pu7PF3kXf9L8r74LN+46Bu0NqXwzVsmcfK9BXQensf2b/yJ7b3tOX79YV54Guz2vm0NFRWz7PMbR96g3d1Ot6eblw+9zCWFl/g/y5lk7Saa5xvt54lHhzUcxyzOLcbV6aKjp4OMlAxy0nIS4u5KGBuI4EegrLaMVFsqKGjpaqG5u5kaVw3H248Dhl1w6bRLjaUNlZUPXB+wIH8BXp8XpYz6yw67g1XzVvGrnb9iT/0e0DAjZ4YhBLlwzr9+lTTXB3h9XrqOzaZl3Z9xt+by8jPTSH3GaMd558HDD8OyZXDglFHgzJxgbuxoZMvBLVQ3VXOq8xQWZUEpRZY9i+XFy89YJEaz5xuvDmvJVCMLe6i1iErySrj7krtZ+8ZactJyBlxQRxAGgwg+4W2SJYVLWP/eetxeNz7tY65zLm3uNmY7ZzN/0nzKT5Sz9o21tPa0YlEWrMqI5kmzpQWFdwIsL17OgskLyHfkBwnBZ+d/lntfvRelFWrS+5z1yFKKcotw2B1c4/gRv/rpdP76V1jht3BLmLa4naLr3mf50rMB2FG3A7fPzf6G/QBYlIWJmRP9k8Pm50u0kfpIENphxfI8hP6GAs//YFlRvKLfORxBGCoi+IT3XlfOWcmjVz/KU+8+xamOU1w87WLKT5T7ywfXtdTR0t1Ct7ebbk83GfYMuj3ddPR0cLzNuAuwKmtQZc3PXvnZoIu3rqUONNhtdro93WTaM/0Fz9Kml/PKK9MBowDcd/97J//14BQO71jI4R0L/fH/Z318JjM/sZG8jDzGp48nzZbGfR++LygOPxbRNqOtE4k09xFNxdRoGO5J7tF8dyUkLiL4RPZezZGWWYjMYXdw88Kb8Wov08ZN4+n3nibHkkNTVxOfPvvTzJs4j2fff5an33saNGTaM3F1uhifMZ4qVxUbyjewqGCRf/+bP9hMt7cbj/aQbkvHp319avCYonrZsnr+6P0M+cqCp8fGlaee48mfncW+F5ex70WjDMQJu5dvf/8US6dO9H+24RCi0AQxswy0GQ2UCPH9A+1za/VWjrYepSSvhA53B1urt1J2pGzQpaQjMVJzBqOtoxUSi6QXfPMCWjVvVdhRXjgvuKKhgp11O8lMySTTnknJ+BLuXHynP+Y7y54FQKenE7fPDYDb52bzwc0cbjnsr8KZbc8my56F2+tmWvY07vvwff42AEF1XJYVLWNB/gJSbal0e7r5p098wK9/chYAJ07AXd9z8fRvnDz8/Yk8/H2j7XPmwJ33no8n65khCVFgjf/cjFwaOxpRStHW00ZVUxXLi5bT4e6IuhMJ3V+kxeYHu15ANAvYb67cTFVTFVWuKv+EuplUZ1EWUm2p/kVrEnWSOxFzIyIhHVNiktSCP5T0erOgllkMLd2Wzm2LbvO/7khxUN1TTY+nB2e6k+k503HYHaTaUsm2Z9Pl6aLb083xtuN84PoAm8WGT/u4aeFNrChe4b9Qdh7dya5ju7BZbHh8Hs7LPw+H3UFbTxtNXU0caz3GL3f+EoDp46ZjuXojN640Psenx9/Pb382k7/8Be78UgHwJACXXNHO3ux6KqeWBl2I4S5O89wcbT3qF/fD7sMoFCV5JVS5qtjfsJ+CrIKoOpFw+zNH2oF3D+G+j4G+p4HuYiobK8nNyGV50XL2N+xnWdEyls5YStmRMn9SXbenmxRLClZl5Zc7f+lf8Cbc5GskMYu1DZOIuRHhGE0dU7KR1II/lAvIjJNOsabgw4fFYsGrvf7Xlxcvp3BcIbuO7mJK1hR82seyomVYlZWHtz9MxakKuj3dTHZMDhqxT86aHHSh7Dq2i1Mdp0i1peL2GncJq+atYs3ra7BZbDyw7QG//2/eaczMmcnJ9pMcnbqF55//CmD4/7/5Yy0//EEar/8tj9f/lgnMAOD6LzRxzS1v88ShB/0RIebFaZ6bQHF3pDhQStHh7mD+pPl+4QwMTx2oxo257WuHXyMvPQ9Xpyto7YFw38dA39NAdor5eoe7g4KsAn+bAzNyvdrrn3PZdXQXrm4XzlQnWw5uCaqSGZhnEWlVs+EmMPTX1enyJ+slavTOaOmYkpGkFvyh+K5WZeVk+0lqmmuwWWy4vW6syhok1tWuaqZkTfFPwBZmFwIw2zmbSlclqbZUdh7bSX5mPmm2NFIsKRTnFgddKPsb9pORkkGWPQuP9pDvyPcvrtLl6cJT7/G/92jbURSK8hPl5Kbnsrlys1/UDpyq4CVWk3Z7OZM9HVh96cyufpA3nvgEz/w+h2d+/xHgIwAUXfc7ymceCiorESruQMS7gWhq3BxrPQYKMm2ZtLvbyUnL8QsDEPb7GOh7imS7hWYjR1qlzKT0QCltPW3YrDZSLCnYLDbaetqCBMufGNV4kA53B2teXxPTxKjQ5Sfb3G0AJFJZ81ASMWlPMEhqwR+s71rRUMHGPRuNEXVKJudMPIfx6ePxam+QWDd3NdPU1dTnB+/xebApGxlpGRRkFXDV7KuC9h94oUzKnES6LR2lFI4Uh19szdo+NosNj9dDp7uTdGs6s3JncaDhAPMnzSc3IzdodNzW00ZWahYp1hSaOpuwXfgbrr50IwXZBby2by/7X7gG97Zvc/DZL3P9s0Zbpk4t4evf/QlzPvw2KVar/y4mnG0xmBo3gcsvBkY9maGMS2csDSvM/X1PoeIeaY3e0HULQjHrEnm8Htw+Nx6fp89Iuji3mLrWOuo76slOzcaZ7ozpCDb03CoUl0y7JKFHzomatCckueDD4HxX8+JbOGUhJ9tPYrPY/IJwyHWIalc1zV3NOOwOlhctZ/fx3UzInOA/ztKZS/ntO7/FkeLAYXcwfdx0I3HLYmXLwS0sK1oWNHlsHjPwojEvpJsX3kxNcw3H247z7vF3sSgL6SnppFpT+4yOHXYHVa4qenw9TMyayNy8udS11FF5qpIDnf/AdtUO7B+7j/Pyz+NfCn/M1seX8sc/wt1fmQJMAWDS2RWcf8Mz/Met10ccvYcb0YWKceDyi4FRT6ECH+57Ms9H4N/hxB2MCdmMlAy21W+j3d0eVBSvv9/Cw1c+bNQl6sfDd9gdaJ+mw90R8xFs4Lk1LbXRMHKWsNLEJOkFP1oqGowsV1enC6CPzbFxz0ac6U6auppYXrSclypfovxEOSjYfWw3H5/zcX799q/pcndxwHWAL53/JcM3NoWpehutPa0UZBX4K14W5xb3GZUGCl+ofx4untwUsQ17NrD54GYKsgrYV7+PnLQc8jLzyE3PxYuXNGsaabY0rrhgCrctg40bjc/84FNvUPrYJZx4v4TN3/0ec79rtOPzn4cf/Qhmzow8ootk9Qxl9BdpX2YnHCjuDrsDrTWH3YdB4w/FjGZEPJBQVTZWMm3cNObmzaWioWJYMpoHak/g+TLbICNnYSiI4EdBoNhorVlcsDhIbNeXr6etp83v2R9pOeK3UQDa3G08/d7T1LfXk2nPpMfdw+7ju7l8+uV4fV4qGipw+9yk2dI41nqMtW+sZXrO9IghhuGEb6CRa74jH4uycKrzFM1dzbT3tFOQXUB6SjqznbPx+DzcdfFdfcS6vaAN5x0/Zmn+AjKsWZxz/Cf84sHJPP00PP306WN873sl3HVXCePGnX4uUIzNkEyzrYMVq0j7MkfA+xv2B4n74oLFAGw5uGVYR+KBcxtTsqacUUZttISeLxF6YaiI4EdBoI8KUJhdGOQVm8k7YNzuLylcQvmJcqpcVaAgNz2X4+3H8WgPrd2t2Kw2JmRO8I/eNpRvYH/DfioaKmjtbuXcSef2G2IYzi/vL359a/VWntz9JO+deI9ub7exmMukc7lq9lVhLZXA45gx6/mOfOZPms/SK1pYfYcRUfTSnu08/+Qs/v7EUn78Y/jxj433jh9v1P9ZstIoBLatehsogiaT+yPcZzGLipn7evZ9Y7Jh6YylQWsamOJuHifcnMCZMJQ7FIlJFxKFiIKvlHoJ+JrWunrkmpOYRPKoQ0XxnInnBK1VW3qglAmZE8h35PPKB6/g9rhp6mpi6ripXFhwIaUHjHj4/Kx8pmZPJTc9lx5vD149cIhhaEZuf/HrR1uPUtNcQ5Y9C+VW/hDMwuzCiCGFocc52nqUTk8nZUfKWDVvFet2reMftf+gqaiJvEcczM6dzVeKfsK2p5by+ONwyy0AJcCfyZpRwdKbXyZ3+jtBcfeB4repchNltWVMzZ7K9sPbw97BLCtaRmtPK5MyJ/Fm7Zs8+/6zfm/+K4u+EiTu5vkPZ4udKdHeoUSTaCYII0l/I/wngJeVUk8CP9Vau0emSYlHpFFd0IRa78i+srGSQ65D/snYKlcVFxZciMPu4PzJ5/tXpTJfd3W6OOQ6ZNTPsaVxUeFF3HrBrRFru4RrixlOaMb0h8avl+SVUHGqgk5PJ0opLFj6RJ+EjkJL8k4v/jJt3DTKT5T7k8bKass40X6C1u5WPF6evNPpAAAgAElEQVQPLo+LQ42HeKr6AR776RR+9zujzf/4B3zz7nbe3F7CX75nPPc4MH3JThZ89nEe+eyNlOQZpajveOkOLMpiWGMT53PxtIv73OFMHzcdn8/nv3Oamzc3yJs3H5Hq5myt3gpErmQ5nCPxTZWbWPvGWjo9nZxsPznorOSB9l1WW8aSwiWyOIowKCIKvtb6T0qpF4EfADuVUr8HfAGv/3wE2pcwhBvVhSbvmCJe7arGme70e/qBC5FYlZWy2jK/5//OsXeoOFVBqjWVpu4mCrILBryIA4Wt9EApx1qP8dbRt4ywT4uNmxfeDATHvk/JmsKiyYvIy8zrE30SSSDNz3O4+TAVDRWk2dLwaR/Li5bj0z4wqkCj0Xi1ES4auFbARRfBP17LpKKhgoqGSl74cyobf7GAmrJF1JQt4vmv936ea7x0L3ZQVOikylXF8bbjfe5wzJBYZ7qTutY6po+bHtGbD7dmwJaDW/yT6M++/yzXnX0d08dND4qIGq7s0IqGCta8voYjLUewKis93p5BZSX3R2DnuP699Tx69aNnJPpiNyUXA3n4bqAdSAWyCBB8wcAU39IDpX6RqW2u5WDjQYCg5QvNTiHQ8+90d2JTNtJT0tE9OmxCjWkNAEGTxbe/dDsNHQ20dLXQ2t2KI8UBGmqaa/xtM7NzC7IKaO1p5c4L74wYR5+RksH+hv1srd5KYXah//McaT7C1HFTmZEzg25PN3WtdcxyzsLV6cLtc1PXUofNYuO9k++Rac+kpqkmSDAPuQ6x89gOFn9sKj1zn8ZqsdLdaSX17W/z+No5VLywEl5YSR2g7O1c/I3dXHN5E2fnFwVFJZn22bi0cUElqAcKEwX8k+hdni72nthLh7uDE20n/EXTImX5DoXKRmPJzFNdp+joMSZ3rzv7uiHXyA+krLYMi7JQkF1AXUsdZbVlQxb8oZRAkA5idNOfh78c+DnwF2Ch1rpjxFo1CjFFpvxEOR+4PmC2c7Y/RNMcKdc01ZCTlhPk+S8vWs4D2x7A4/OQk57Tx2+uaKjgnlfu8S+gYqb6b9izgTdr3zRsEHcbVqwAZKdmc7ztuN+/rmmuwWqxMjlrcpClEHjhFucW09jRyLb6bf5j3HrBrUF2lU/7ONl+kraeNt46+hYKRYfHiIYpchbR7e2muqmavMy8oCJkgSNSn/ax+tLVTM6ajFVZeSHrP5k86f/odHfS6crB+tp9dJR9iY1rLmHjGuPzn3OOMQFcdGGwiIeKZ3+ZtWB8pipXFR2eDlJsKeSm51LfXu8vmgbhs3zDMZDombkPRc6iIa9LG+kY5joNdS11+LSPJYVLBrXfQAZbAkFq5Ix++hvhfxe4Xmu9d6QaM1oJrLhZVlsG4Ldzdh/f7S/Lm5OW488sddgdfuujMLswoidb2VhJm7uNFEsK3Z5uTrSdoLKxkvr2esOPVxYUilRbKgpFWkoau4/t5nDzYVydLlq6W6hprvFXiYw0ybu8eDnt7nZ/WGOoDWXW9Xd1uvD6vHi0h25PN3tP7iXfkU+2PRubxeYvQmYKZuiI9EjLEQqzC1n7xloaOxtxdbqwW+2k5zZx1k3ruPeJPFbOWcnu3fDd78JLL8E114AxAfwkF1x+ku/d30FJ3oyg8z9QqGpgQtXuY7uxWqxBRdMiZfmG+64HEr0zzTTt7xgrilfw6NWPDouHP9gSCFIjZ/TTn4d/2ZnuXCmVA/wGmAdo4Mta67Iz3W8iEXpxrpq3ipqmGr/g1nTXBAnu3Zfc3WdCdkXxCn+lzPv/dj/17fUsyF/gHwlrraltrUVphUd7sCorK+es5C8Vf/ELVpotDZvFRpo1LciKUUoFVYkMtZ/MC9esHhnoiwfaVc50J+fln4c6rHjr6Ft4tReFotvTjUVZ8Pg8/tF74GcLHZFOzZ7q97ctykJWqlEeOtuezcSMiX7RWbAAXnzROMdaQ2kprF4Nu7ZN5FMfOX3+v/pVuOhzh8PG6AcS2AEEJqq9Wfcm9e31HHIdYkXxigEFLFrRO5NM04GOYf5ezpTBdkxSI2f0E+s4/F8Am7XW1yml7EBGjI834oRenIEj49qWWnbU7eCsCWf5BTfShVrRUMHXXvwaO47uwOczJkQvKbyEyVmTuWzaZXR6OslNzzVKJ2gvK+esZN016yirLaOxs5H9DfuZmzeXY63H/HV8NJq27jYONBygrbuNPSf28MudvzQmK0Mu3NAJ6MASBoF2lVd7+Zfz/oXNBzf7F02fmTOTLk8XR1qOcPn0y/uI06NXP0rpgVKUUuw+vhubxUaGPYOOng5mOWexfPZy8rP6TiQHCtE115gjfejuhl//2ugAHnsMHnvsKuAqUD5yPv4wade92q9fborxpspN/P7d32NRFjYf3BzVBGg0onemPvdICutgOqYzvXMR4k/MBF8plQ1cDnwJQGvdA/TE6njxItzFGRhFY46azbK8kahsrKShs4EUSwpaabo93XR7uw1/WUG6zaiTExhOGXhn8NBrD/lH55dNuwwUuDpdWLDwzvF3UEqxt34vznQnF0y+IGzoZ0leCYdch4IW0DbtBHPy15nupKaphtz0XFxdLtrd7Wyt3opP+zjWdoz3jr/HI1c9EiQGs5yzqGupY0/9Hno8Pbi1m/yMfDLsGSwvWs5n5wUv/TiQbZKaCnfcYTwA/lFxkE/d+SbHX7mBptJ7KS2FUoyyDw8/DNddB5WNfUU40G6qclXx1LtPDVj5ciDRGw6fO17CGk1HdSZ3LkL8ieUIfxZQDzyulDoP2AV8Q2vdHsNjjjj9XZyDuXCLc4vJS8/jkOsQPp8PZVGkWlM53HyY9+vfJ9uejavTxc0Lbw47Wblq3ipqmmuM8MOT5ew9udeotGl3AGDBQor1dMlf8y4hkMBwwoaOBopyi/x2glmaedq4aWw/vJ1OTycFWQV0ebpo7WnF7XXj6nRR1VTFhj0b+Oy8z/o/tzkPkWXPokW30NTRRLO1GbfP7c9IDhTGwXrFDWo/8z//JJZl/4bb62Zy90fI3/FrXi7N4jOf8X8bOM/q5KIvbuTfb1pFSV6J326qclXR2NnIqY5TPPTaQ1EVWQsMiw38bofL5x5pYY2mo5IIndFPLAXfBiwE7tRav6mU+gWwGvh+4EZKqVuBWwGmTZsWw+bEh/7EIXS7//n4/7Bhzwa/h+/VXp545wlOdZ6i091JUW5R0GIr5upbgcsgtve0837D+zR0NNDj7SHNlobW2u+Vhyv5axIaTtjU1RS2Jr0jxQEZUN1UDRrGp4/nZPtJTrSfoMfTwxO7n+C1mtf89YBWzVuFI8VBZWclJ9tPGmGZXqPEc7ilBQMtpKauJqzK6v+84Qq0bT64mbeOvkW3pxuNZvbkGv7z8aN+2+Zza35Hy0vfwbVvIZtWL2DTauPz3njjCn7wxd+wuX6df6H6aEU6kkCOVp97oI5qrEboJFsnFkvBrwVqtdZv9v79LIbgB6G1XgesA1i0aFHiruoQgWhHRtEupXj/Fff7/y49UEpBdgGd3s4+AgxG5mj5iXKyUrOoclVRmF3Ieyffo6WrBY/PWBg9y57F5KzJLJm6BIuyoLVm5ZyVYdtY21KL1+f1hxMGFlML9fjN0sz5jnymj5vOD//+Qw65DuG1eGnpauHt42+T78gn1WbMOTxy1SP84s1f+C2uLk8X3d7uPlE95rECLaSNezZS21LLhvINONOdfqsJ4J5X7uHNujfp8HRgUzbyHflk2jP9glVWW0b2WTuwFn2M5q5m0i1Z5FV+m1Mv3M3jj9t5/PGlgGG11a/6P8665lhUIh1JIEfSjhlOsRqooxqLETpjtRPrj5gJvtb6uFLqiFKqRGtdAXwUeD9Wx4sX0VwIg7lYAiNIwgkw4F/Lds/JPTT3NNPtNSJlvNrLuRPP5d0T7+LqdOHxeUi1pTJ93HSumXONPx9g456NAGGzTJVSXDX7Kv98g3mswEnQwIvE9N9rW2p5cNuDeL1eOr2daK15tepVLiy40C9I5+efz/aa7eSl55GWksYVM67A7XOzpHBJn9yAwPyBY63HeHTHo3S4O6hrq2N8+nh/clibu42ctBw63B30eHvo9HTiSDGS3UoPlDI1eyo2iw0LFpRSZGdkYL3gCS5Y+v94bOVj5KeUsHatUfht98ZPsnvjJ9kA5OfDT34CX/gCWK19v6f+BHIk7JjhFquBOqrReufSH2OxExuIWEfp3Ams743QOQTcGOPjjTjRXAjRXiyh1TcX5C/oI8C3v3Q779cb/abb56atu4022hiXNo7Jjsm8ffRtrBYrmXZjndtrSq7hzsV3Bv24y0+Us+b1NcxwzuizlmxzVzNHW49yyHWIdbvW+csRbK7czCNXPdJnP+vL17OkcAnbD2+nIKuAt9rewqZs2K128h35/nrxmyo38fD2h/H4PNR31PO1D32Ng40HgzqgwPpCgfkDeZl5TMqcRE1zDcdaj9HY0cgTu5/gpvNvwpHiwO1zMy51HM4MJ5+a+ykuLLjQvy+vz8vqS1fzzvF3eP3w63S4O8iwZ5xeqWpOCQ88AA88YHwHVVVw333w+9/DjTcaD4ALLzQmgK+4wvi7P4GMhU0Qus9oxWowbemvoxruO5dEsFLGYic2EDEVfK31bmBRLI8Rb6K5EKK9WMyLONWWikVZSLWlkmZL87+2s24ne0/spdvXTY+nB6vFSl56Him2FMaljmNr1VYsFgturxtnuhOrsvL+SaNzCPxxN3U14Ux3Bq0l6+p0sb9hP7UttQBsr9lOl7crqKa/2X7TXzfLQ2yv2Y4z3cl053SqmqrwaMNOyk3P9XdUZkTMTOdM6lrqeL/+fdJT0v0dx1PvPkWPt4f5k+ZzpPkIHe4O5o6fy6nOUywrWkaVq4o2dxuNnY1kpWZxquMUG8o3cPcld/tLSZh3IaF5BpOzJnPLBbewqXKT3yYyS16EzqvMnAlPPWU8AF5/Hb7zHXjtNVgaEGT1mc/AAw+UsHLO4Oy7oQhduH1GGx463HcBwyHOiWKlJGOYqdTDHwaiuRCi2ca8iLs93f4s0E53p7+87vsn30cpo2KZRhtZthaj+mWqLRVnupPJWZOpaqqiy9PFhMwJ/pHsyjkr+xR6M8Vi+rjpaK1pd7eDhslZkwGoa62jtbsVlFGpMjBeP3Rt2qauJnLScsIuqFLRUIEFC12eLupa6ujydJGXkce+hn3sr99PbWstc8fP5QPXB/7PVttSy9HWo0ZoqrKyZOoSZjpn4tM+TnWc8o/SvdrLVxZ9Jex5DBXDFcUrmOWc1afYXX+ic8kl8OvnDJGenVPMO38tYfVq+OMfjYfJPfcYj/5G3kMVunD7DPw+I4lVoloWidSuZAszFcFPIEInRr3a60/eMu0WFCgUWmtuWniTP2rHXB+3w93B2Xln+1dk8mkftS21VDRUBP24TeEzwyZzM3IpHFfI5oObqWioYErWFO778H19Rs9mOyOtTRu6zGJgJFFhdiEznDOob6/naOtRKhoqyLBngIY5eXPISs3inInnMCVrCs+9/xyVjZX4fD5+9sbPWFywmMlZk7np/JuCJm/DjWzDjdwCR9Yr56wMm20cyRIJEumP3cvhzxnbtbfDL35hlIB45BHjAStJyVjKoi/8L7M/ejiofUMVukgd2EBilaiWRaK2KxlQ4aozxotFixbpnTt3xrsZCUW40g2RauUHihpgrGNbuZmC7AK8Pi/Li5eHzUANtxD4YFamCreWrskvd/6Sh7Y9hM1qw+P1cE3JNXR6OunydPFW3VuUjC9h/6n9zMyZyZSsKf7om6+9aHj8pzpPATAhcwIL8xdy4/k3+jupgc5BfyNriK4ccumBUp7b95y/kuh1Z1/X547CpK7OWOd33brg58891/D/Zy6q4Cfbh2ZlDNXzTgSvPByJ2q7RiFJql9Y6KutcRvgJzmB8xsARX0VDBa/VvMapzlO4ul10ubtod7f7V4gK3c+SqUbVxcGU8A0XtWOKqdne423HcXW7SLGk4Pa5UUrh9XlpaG+gtbuVHm8P8ybM69PJ3HXxXdzzyj24vW46PZ34fD5cna6gTOZA+ltdaqiWCBC2kmikc1RQAL/6lfEA2LXLGP1v2QJXXw1mAbjFS4/zvR92UpI3M2rhG6r1kKiWRaK2a6wjgj8KGMrFUdlYSU5aDg0dDdS316PRlOSV9Fl1KXR0D0b9+kj2TKg4hYrp1uqtlB0p83cAM3Nm4kx1YrPY8Pg8zJs4j+njprP2jbWcO+lcvNrLbYtu61PDZkXxCmpbanl0x6M47A7SbGlBeQGBmJ+hsrGS6qZqls5YSqot1f85Ay0EV6crrMXV37kPrSQarRVzwQWwebPxf63h+eeN+j87tubzia3+I3DWx48w79OPcuOlV0e8UxKE4UAEP0EZjgJcDruDSZmT6PJ0kZueG3aFKFOwM1Iy2Fa/zZ8xO9s5mw9cH/gXCAlclrG/zFIgqAPIz8rngikX+LOBzRLE03OmBxWcC/f5tx/eTlHu6RyESIXNKhsraetpo7GjkbaeNl499CrnTDonSNjNhc43V25mR92OiHc64QhXSXSwKAWf/KTxAOjqgjt/tJfH185h34tXsu/FK3kGsNg8LPz8n/jtA4pzC+cM+jiC0B8i+AnIcBXgMrNV502ch9fnZXHB4j52hCnY+xv2g8ZYGKSj3p/MZZY+KKstiyqzFKDsSFnQQiXTx0331283jz3QpJ3ZEQUuExmJ4tximrqa8GovU7KmkGZNo62nrY+wm/s01+aNdqQei/C9tDS461s2ej50M1aLlQM1TRzf/GU+2LSSnU98jvOe6P1sxYb//6lPGZ3GWEE8/Pgggp+ADFfYWmDBs8PNhynMLuyzn8DR75aDW/wrU6VaU/FpHw3tDXi1lyWFS/x1/gfKLA0Ux8DqmzVNNf5qlAMJ6ECRHKGCcdfFd/lj7F2drqA8A/P8WZWV3cd34/EZi7csL1oe9bmMhecceB6OFR5jQ/bPOe+Lj+OwO7gu735++7OZPP88fPrTp99z1VXw0EOwaJiyW/oT3liJcqLE4ScjIvgJyHCFrUW7H1PMTLvF9O6PtR7zh0BuP7ydS6ddypGWI0Ej9XCiYO6vv+qbAwlouDsHM0kqXAnncDH2oZ/bq73Mds6m0lVJqi2VjXs29qnfP1wMZjIW4Jm9z+BMd9LU1cTNC29mRfFMruldgkhrePllw/9/5RXjYXLzzUZmcGHh0NoYSXhjKcqJFIefbIjgJyDDZSGExvVXNp5e1CTS9oGvlR4o9d8hlJ8oZ0P5BmY4Z7Bxz0ZmOWcB/Yc29ld9MzSENFJ5abPjMI/j6nRxrPUYpzpPBXUiofsIzDMw91mcW4zH58GmbGSkZZCTljOsYhMYphpNUlfgeerPvlIKli0zHgBuN/zud0YH8JvfGA+TBx6Ab34THI6B29uf8MZSlCUOP36I4Ccow2UhRAqdHGzCT2g5BlNk+xMFc+I4tPpmaGSQUsrImo3QtkDxMZdtNFfMMssnD7SmrXku7r7k7qC7g+ESm8DPVO2qxpnu9Av4QGLZnwCGu1NISYHbbjMeAC4XrFljFHv7/veNBxhhog8/DJ/7HFgsgztuYAkNV6fLX6J6OIjFnIgQHSL4ScBQR2uhdwhhbZJ+RmqRLuzQ9igU5+WfF7FtQbX47Q4yUzL9o/27Lr7LCCGN8vMFWj/DKTaBn6m5q9m/zGQ0I9hI5ylaW+Wkt4KLv1TJ/m8Z7z14EH7wA9iwwaj2+YUvGNtdconRAVx6af/HNV9bNW8Va99Y6y9RPdBqYINB4vDjgwh+EnAmt9CBF2Y4oYymcFy/Ap7iQCnVb9vC+fmhZRMG8/liITahnZJZaiLaTiVcm6LpqMN2CkUl/OEP8Ic/GNv8/e9GAbjXX4fLLjv93htugB/9qG8BOBOv9gaFz4rXPvqR0gpJQrSTiCMVLheNhz/U/UVKzor15xruY0QzwjdLP5iifO1Z1/ZZujIQrxfWrzf8/2PHgl/77nfh7rth3Ljojz+cSKjm0BhMaQURfMHPWA2XC1xnoKmrqd8krkQjmo5sqN9ZRUMFP3z55+wvXc47Gz4V9Nr48Yb9s2RlBVUtIzMAGIu/vZFAaukIQ+JMIjMSeXRmZuIebDxIh7uDNa+vGVY/OpaEWj2bKjf5k9hWFK84ownQysZK0jLdfOLWd1nwmRdYXLAYe1sRL/16Ef/7hxxuuQWM+j8lXHCB0QFceeXQPsdAv4/A3565sM4N828YFd/RaCLM3L2QrAzV6zdHZ8/te46HXnuIioaKGLd0cJiZuKGrXQ0X5gL1FQ0VQf8fbjZVbuKOl+5gQ/kG7njpDjZVbgKMTiHcOsUDEVpjaHPlZrY3/4HM677B/voKtIY334SPftQoBHfVVUaIqFJw7bWwb190x4nm9xG6sM7ek3sT8rc02hHBH+MMRoDM0eK1Z107qFvqwNGZ1WIdVjEdDsxM3KnZUylyFg0qHHOg8xcoZve8cg+r/7r6jDq+/o5nrhpWkF2ARVkoqy0b9P4DCfy+lxUtIzcjt893uHgx/PWvRvKX1wvPPAOzZ8Of/wxnn326A/jWt6ChIfxxovl9mG05Z+I5LMhfwPxJ8xPytzTaEcEfwwxl5D2U0eJoSKRZUbyCx1Y+xo3n3xh1ZxbN+QsUszZ3G209bUPu+AY63pLCJfi0j7qWOnzax5LCJYPafzjM73vpjKUDfocWC1x3HRw8aHQAHR1G/L/VCv/+7zBhgiH+GRnwn/8J3d3G+waT8X3D/Btw2B0J/VsazYiHP4YZqRT20ZJIM9hwzGjO32BDTM/keCuKV/Do1Y8GefiBnOk8ymDXREhPh7vuMh4Ax4/Dj38M//3f8I1vGA+As84q4c57H6TwQ7uZM37gUhOj4bc0WhHBH8OM5Mg71ok08ZgUjub8DZQjMNzHW1G8ImyE0ZlG6wS+11x4frDk58OjjxoPgHffNUI9X3wRvvaFQsAo+LNihVEAbsGCIR1GOAMkLHOMk8jRM9ESz5C9kT5/Qz3eYOPxh+u90aI1bNpkxP+Xlwe/9tWvGuUgJk+W8MyhMJiwTPHwxzhDjeBIJOI5KTzS5284Im4Gezc3EneCShnLPL73niH+3d2G9ZOVBY89BlOmGNvMnVDC3v9byeTU2TJpGwNkhC8kPDLqi44zuRuJ9yLpp07BI48Yk8CBTJnq5mc/TeGf/zl8AThBMm2FMUgiWFOJ0IZEIlYdcUVDBVt3HuX5xy5g81+yg1778IeNBLCLLjrjw4wZxNIRxhzxtqYSPbksHsTKaivJK+Ery5ey6flstDYsoL/+FT70IaMQ3JIlp+P/v/QlqKkZlsMmBSL4ghAFiZ5cFg9GMgrsox+FHTsM8Xe74be/NeL+n3wSZsw43QHcfz+0tMSsGaMeEXxBiILRkFw20gwlM3s4Sk/YbPDlL8PJk0YH0NR0etGXH/7QqPaplBEm+sQTRoawYCAeviBEiXj4Z8ZITb5XVxsj/SefDH5+8WJjVbCPfGTYDxlXEsbDV0pVK6XKlVK7lVKi5MKoJt7zCGdCLIu6RctI2WIzZhgje9P/f/11Y7J3xw7DGjLtn3/+ZzhwICZNSFhGwtJZqrVeEG0PJCQWiSAUwpmRKBPOw22LRfvbvPhi+NvfTheA27ABpk83CsGVlJzuAG6+s5ENO7aM6d96TC0dpVQ1sEhrHaGOXjAjaenI7fnAhLsFhzNfnUoYWUYikzZahuu6Gy57qL0d/uu/jCUgA8l0ePnpI1Zuvhns9iE3c0RIpAVQNPCyUkoDv9JarwvdQCl1K3ArwLRp02LcHANJ5ImO0GJeW6u3UnakbFDnTTrW+JNIE87DVXNpuAoDZmYa5R7mXWt0ijk95/DSbxdSsWUpt98Ot99ubDd/vhH/v2KFcTcwWom1pXOJ1nohsAK4XSl1eegGWut1WutFWutFEyZMiHFzDCTELjpChQIY1HlLFCsh2RnqOgfDyXBbg8PdiZn7a7Lv5cLbnvAvALNrFyxfbtT/+fjHjWxfpeATn+hbE2g0ENMRvtb6aO+/J5VSfwYWA9tiecxoSKQRTyITrhJk2ZGyqM/bSJVnFgYm1tVMI1HRUMHW6q1sObgFZ7pz2O6oh7uMcrjfeumBUoqnFbNpk7FvreGFF4w7ghdeMB4md95pVAadNOmMmhFzYubhK6UyAYvWurX3/68AP9Jab470HvHwE5/BnDexzpIb8/uva62j2lXN8uLldLg7Is4hJMo1Ge3vtrsbfvUrowPo7Dz9vNVq2D+3326sGRBrEiUscxKwXSn1LrADeLE/sR9pRnOIXTwZzHlLBCtBiB/mHd7cvLmgDCGNdGeYSPZftJZvaip8/evGyl9aG4lg//qvRiTQ3XcbK38pBUVF8OyzxjbxJmaCr7U+pLU+r/dxjtb6wVgdS0hcpGNNXkzrtMPdwbwJ8/j02Z+O2PEn0rzaUC3fCRPg5z8/Hf+/dy986lPwwQdw/fWn/f8rr4S33orxh4iAZNoKghAzorVpEs3+G257SWt45RXD/nnnneDXbrrJKA09fvzQ9i3lkQVBGHUkioc/Eng8Rjbw6tXGWgD33w/33Te0fYngC4IgJAmJMmkrCIIgJBAi+IIgCElCrEsrCIIwhkkm330sIIIvCMKQSLTImjMlGTovEXxBEIbEWCqdMdY6r0iIhy8IwpAYSzWpEinxK5bICF8QhCEx3AXM4slY6rz6Q+LwBUEQiJ2HH+u5gURaAEUQBGFUEIsS0ok2NyAeviAIQoxItLkBEXxBEIQYkWhzA2LpCIIgxIhEm9gWwRcEQYgh8VpeMhwi+IIgJATJkOkab0TwBUGIO4kWzTJWkUlbQRDiTqJFs4xVRPAFQYg7iRbNMlYRS0cQhLiTaNEsYxURfEEQEoJEimYZq4ilIwiCkCSI4AuCICQJIviCIAhJgnj4gpCASBJS8jCS37UIviAkGPN9wtsAAAbiSURBVJKElDyM9Hctlo4gJBiShJQ8jPR3HXPBV0pZlVLvKKVKY30sQRgLSBJS8jDS33XMlzhUSn0LWARka61X9retLHEoCAbi4ScPZ/pdJ8wSh0qpQuDjwIPAt2J5LEEYS0gSUvIwkt91rC2d/wD+DfDF+DiCIAjCAMRM8JVSK4GTWutdA2x3q1Jqp1JqZ319fayaIwiCkPTEcoR/CfAJpVQ1sBH4iFLq6dCNtNbrtNaLtNaLJkyYEMPmCIIgJDcxE3yt9Xe01oVa6xnAKuBVrfXnY3U8QRAEoX8k8UoYFiSqRBASnxERfK3134C/jcSxhJFHMkMFYXQgmbbCGSOZoYIwOhDBF84YyQwVhNGBePjCGSPL0wnC6EAEXxgWJDNUEBIfsXQEQRCSBBF8QRCEJEEEXxAEIUkQwRcEQUgSRPAFQRCSBBF8QRCEJEHCMuOE1J4RBGGkEcGPA1J7RhCEeCCWThyQ2jOCIMQDEfw4ILVnBEGIB2LpxAGpPSMIQjwQwY8TUntGEISRRiwdQRCEJEEEXxAEIUkQwRcEQUgSRPAFQRCSBBF8QRCEJEEEXxAEIUlQWut4t8GPUqoVqIh3O6IgD2iIdyOiQNo5vEg7hxdp5/AwXWs9IZoNEy0Ov0JrvSjejRgIpdROaefwIe0cXqSdw8toaWc0iKUjCIKQJIjgC4IgJAmJJvjr4t2AKJF2Di/SzuFF2jm8jJZ2DkhCTdoKgiAIsSPRRviCIAhCjEgYwVdKLVdKVSilDiqlVse7PZFQSlUrpcqVUruVUjvj3R4TpdTvlFInlVJ7Ap7LVUq9opSq7P3XGc829rYpXDvvV0rV9Z7T3Uqpq+PZxt42TVVKbVVK7VNK7VVKfaP3+YQ6p/20M6HOqVIqTSm1Qyn1bm87f9j7/Eyl1Ju95/OPSil7grbzCaVUVcD5XBDPdg4ZrXXcH4AV+ACYBdiBd4Gz492uCG2tBvLi3Y4w7bocWAjsCXjup8Dq3v+vBh5J0HbeD9wV77aFtHMysLD3/1nAAeDsRDun/bQzoc4poABH7/9TgDeBi4A/Aat6n/8l8NUEbecTwHXxPo9n+kiUEf5i4KDW+pDWugfYCPxTnNs0qtBabwMaQ57+J+DJ3v8/CXxyRBsVhgjtTDi01se01m/3/r8V2AcUkGDntJ92JhTaoK33z5TehwY+Ajzb+3winM9I7RwTJIrgFwBHAv6uJQF/tL1o4GWl1C6l1K3xbswATNJaHwNDGICJcW5Pf9yhlHqv1/KJu/UUiFJqBnA+xmgvYc9pSDshwc6pUsqqlNoNnARewbirb9Jae3o3SYjrPrSdWmvzfD7Yez7/XSmVGscmDplEEXwV5rlE7VUv0VovBFYAtyulLo93g8YAjwGzgQXAMeBn8W3OaZRSDuB/gW9qrVvi3Z5IhGlnwp1TrbVXa70AKMS4qz8r3GYj26owDQhpp1JqHvAdYC7wISAXuCeOTRwyiSL4tcDUgL8LgaNxaku/aK2P9v57Evgzxg83UTmhlJoM0PvvyTi3Jyxa6xO9F5kP+DUJck6VUikYIrpea/1c79MJd07DtTNRzymA1roJ+BuGN56jlDJLvCTUdR/QzuW91pnWWncDj5NA53MwJIrgvwUU987Y24FVwF/i3KY+KKUylVJZ5v+BjwF7+n9XXPkL8MXe/38ReD6ObYmIKaC9fIoEOKdKKQX8Ftintf55wEsJdU4jtTPRzqlSaoJSKqf3/+nAlRjzDVuB63o3S4TzGa6d+wM6eYUxzxD33+hQSJjEq96wsf/AiNj5ndb6wTg3qQ9KqVkYo3owCs/9IVHaqZTaAFyBUdnvBHAf8H8YURDTgMPA9VrruE6YRmjnFRjWg8aIgrrN9MnjhVLqUuA1oBzw9T59L4Y/njDntJ92fpYEOqdKqXMxJmWtGAPNP2mtf9R7TW3EsEneAT7fO4pOtHa+CkzAsJ93A18JmNwdNSSM4AuCIAixJVEsHUEQBCHGiOALgiAkCSL4giAISYIIviAIQpIggi8IgpAkiOALQgR6K1FWKaVye/929v49Pd5tE4ShIIIvCBHQWh/BKFHwcO9TDwPrtNY18WuVIAwdicMXhH7oLVuwC/gdcAtwfm9FV0EYddgG3kQQkhettVspdTewGfiYiL0wmhFLRxAGZgVGxcl58W6IIJwJIviC0A+9S9ldhVHZ8V9DipIJwqhCBF8QItBbGfExjBrzh4E1wNr4tkoQho4IviBE5hbgsNb6ld6//weYq5T6cBzbJAhDRqJ0BEEQkgQZ4QuCICQJIviCIAhJggi+IAhCkiCCLwiCkCSI4AuCICQJIviCIAhJggi+IAhCkiCCLwiCkCT8fzpbEC08upQtAAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "x_train = np.array([x_train]).T\n",
    "y_train = np.array([y_train]).T\n",
    "linreg = LinearRegression()\n",
    "linreg.fit(x_train,y_train)\n",
    "print('f(x) = ',linreg.intercept_,'+',linreg.coef_[0],'x')\n",
    "x = np.array([x]).T\n",
    "plt.scatter(x,y,s=10,alpha=0.5,c='green')\n",
    "plt.plot(x,linreg.predict(x),c='blue',linewidth='1')\n",
    "plt.xlabel(\"X\")\n",
    "plt.ylabel(\"Y\")\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 97,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "1.截距： [7.05306125]\n",
      "2.回归系数：\n",
      " [[-0.05901175]]\n",
      "3.MSE:  0.3324139094083711\n",
      "4.R_square： 0.36398337724552843\n"
     ]
    }
   ],
   "source": [
    "print(\"1.截距：\", linreg.intercept_)\n",
    "print(\"2.回归系数：\\n\", linreg.coef_)\n",
    "y_pred = linreg.predict(np.array([x_test]).T)\n",
    "print(\"3.MSE: \",  metrics.mean_squared_error(y_test, y_pred))\n",
    "print(\"4.R_square：\",metrics.r2_score(y_test, y_pred))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "可以看出不论是从可视化的图像还是从MSE的数值来说，这次的回归都还算是比较成功的，可以看出社会底层更倾向于居住在房间更少的住宅里（可能是经济原因所限）   \n",
    "（总感觉这个数据集越分析越有点政治不正确了）"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 使用KNN回归预测\n",
    "所以果然还是不甘心，从网上找了找一些文章，找到一个使用K近邻回归进行预测的算法，似乎性能要更强一些："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 98,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.neighbors import KNeighborsRegressor"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "训练测试集划分、标准化："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 99,
   "metadata": {},
   "outputs": [],
   "source": [
    "X_train,X_test,y_train,y_test = train_test_split(boston.data,boston.target,test_size=0.25,random_state=33)\n",
    "ss_X = StandardScaler()\n",
    "ss_y = StandardScaler()\n",
    "X_train= ss_X.fit_transform(X_train)\n",
    "X_test = ss_X.transform(X_test)\n",
    "y_train=ss_y.fit_transform(y_train.reshape(-1,1))\n",
    "y_test=ss_y.transform(y_test.reshape(-1,1))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "KNN支持加权，因此分别使用平均权重和距离加权进行预测"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 100,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "R-squared value of uniform-weighted KNR is 0.6903454564606561\n",
      "the MSE of uniform-weighted KNR is 24.01101417322835\n",
      "the MAE of uniform-weighted KNR is 2.9680314960629928\n"
     ]
    }
   ],
   "source": [
    "uni_knr = KNeighborsRegressor(weights='uniform')\n",
    "uni_knr.fit(X_train,y_train)\n",
    "uni_knr_y_predict= uni_knr.predict(X_test)\n",
    "print ('R-squared value of uniform-weighted KNR is',uni_knr.score(X_test,y_test))\n",
    "print ('the MSE of uniform-weighted KNR is',mean_squared_error(ss_y.inverse_transform(y_test),ss_y.inverse_transform(uni_knr_y_predict)))\n",
    "print ('the MAE of uniform-weighted KNR is',mean_absolute_error(ss_y.inverse_transform(y_test),ss_y.inverse_transform(uni_knr_y_predict)))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 101,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "R-squared value of distance-weighted KNR is 0.7197589970156353\n",
      "the MSE of uniform-weighted KNR is 21.730250160926044\n",
      "the MAE of uniform-weighted KNR is 2.8050568785108005\n"
     ]
    }
   ],
   "source": [
    "dis_knr = KNeighborsRegressor(weights='distance')\n",
    "dis_knr.fit(X_train,y_train)\n",
    "dis_knr_y_predict = dis_knr.predict(X_test)\n",
    "print ('R-squared value of distance-weighted KNR is',dis_knr.score(X_test,y_test))\n",
    "print ('the MSE of uniform-weighted KNR is',mean_squared_error(ss_y.inverse_transform(y_test),ss_y.inverse_transform(dis_knr_y_predict)))\n",
    "print ('the MAE of uniform-weighted KNR is',mean_absolute_error(ss_y.inverse_transform(y_test),ss_y.inverse_transform(dis_knr_y_predict)))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "MSE的确有所改善，比单纯的线性回归要更加准确一些。   \n",
    "最后做出可视化图像："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 102,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAA6QAAAHVCAYAAADmXjaQAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4zLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvnQurowAAIABJREFUeJzs3XucHHWd7/9XVVdfZjKXJBNCEsKSYLgkIWQI4aaAweNlQX4RBTcgew4oK+tZVl33eGHPesRd75dF9MBxD4KiCMJP5bY/lX0oEETcBSOEa8JNEjK5kUxIMreu7uqq3x9V1dMzmUvP9KWqZ97PxyOP7unu6f7OpKa73vX5fL9leJ7nISIiIiIiIlJnZtQDEBERERERkelJgVREREREREQioUAqIiIiIiIikVAgFRERERERkUgokIqIiIiIiEgkFEhFREREREQkEgqkIiIiIiIiEgkFUhEREREREYmEAqmIiIiIiIhEworiRefMmcOiRYuieOmy9fX1MWPGjKiHIRHR/79oGxBtA6JtQLQNiLaByduyZQt79+4d93GRBNJFixaxYcOGKF66bOvXr2fNmjVRD0Miov9/0TYg2gZE24BoGxBtA5O3evXqsh6nll0RERERERGJhAKpiIiIiIiIREKBVERERERERCIRyRzSkeTzebq6ushms1EPBYD29nY2bdoU9TCmpUwmw8KFC0kmk1EPRUREREREaig2gbSrq4vW1lYWLVqEYRhRD4eenh5aW1ujHsa043ke3d3ddHV1sXjx4qiHIyIiIiIiNRSblt1sNktHR0cswqhExzAMOjo6YlMpFxERERGR2olNIAUURgXQdiAiIiIiMl3EKpCKiIiIiIjI9FFxIM1ms5x66qmsXLmS5cuXc80111RjXJHYvXs3H/jABzj66KM5++yzOeOMM7j77rtr/rotLS1Dvu7u7qazs5POzk7mzZvHEUccUfw6l8uV/bx33XUXmzdvLn595plnsnHjxqqNW0REREREpBIVL2qUTqd58MEHaWlpIZ/Pc+aZZ3Luuedy+umnV2N8deN5HhdccAGXXXYZt99+Oz09Pezbt4/77ruv7mPp6OgoBsfPf/7ztLS08MlPfvKQx3meh+d5mObIxxXuuusuTNPk+OOPr+l4RUREREREJqPiCqlhGMUKXz6fJ5/PVz4H0DBq828MDz74IKlUio985CPF24466ig++tGPAn4l+IMf/CArVqzgpJNO4qGHHgLglltu4W//9m+L33P++eezfv16wK98/uM//iMrV67k9NNPZ/fu3QC8+uqrnHHGGaxYsYLPfvazE/rVvPzyyyxbtoxLL72U5cuXs23bNmbOnFm8/4477uCv/uqveOSRR/jlL3/JJz7xCTo7O9myZUvx/lNPPZXjjjuO3//+9xN6bRERERERkWqqymlfCoUCJ598Mi+//DJXXXUVp5122iGPufHGG7nxxhsB/xQvYWgLtbe309PTA0CtTrYSPv9I/vjHP3LCCScUH1MoFIY8/n//7/9NPp/n97//PS+++CIXXHABTzzxBNlsllwuV3ys4zj09/fT09NDX18fK1eu5Oqrr+Z//a//xfXXX8+nP/1prrrqKi6//HI+8IEPFH8no43Ntm2SyWTx/t7eXjZv3sz/+T//h5NPPhnHcYZ8/8DAAPl8ns7OTt7xjndwwQUXcP755xd/Jtu2eeCBB/jlL3/J5z73ubq0JE9GNps9ZBupp97e3khfX6KnbUC0DYi2AdE2INoGaq8qgTSRSLBx40b279/Pe9/7Xp599llOOOGEIY+58sorufLKKwFYvXo1a9asGXL/pk2bBs/76XnVGNYhxgq6mUyGVCpVHMOHP/xhHn/8cVKpFH/4wx/4wx/+wEc/+lFaW1s5+eSTWbRoETt37jzk+yzLorm5mdbWVlKpFO9///sxDIMzzjiDX//617S2tvLYY49x7733kkwm+fCHP8w111wz6jlP0+k06XS6eH9LSwtvetObir+/MJCG9zc1NZFMJmltbSWZTNLU1FS8L5FIcPHFF9Pa2sqZZ5455utGLZPJcNJJJ0X2+uvXrz9kG5XpRduAaBsQbQOibUC0DdReVVfZnTlzJmvWrOH++++v5tPWxfLly3niiSeKX1977bU88MAD7NmzB/Dna47Esixc1y1+XXr+zGQyWWxfTiQSxfAIlZ3aZMaMGcXrpmkOGdt45+9Mp9MjjkdERERERKTeKg6ke/bsYf/+/YDfLvqb3/ymIRfRedvb3kY2m+W73/1u8bb+/v7i9bPPPpvbbrsNgBdffJHXXnuN4447jkWLFrFx40Zc12Xbtm08/vjj477WW97yFu644w6A4nNOlmmazJo1i5deegnXdYe04La2to7Z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lTqyoh7AiH51Nex6prrPOW8FnPvVMR/ypS99iR/+8IfMnTuXefPm0dHRAcDll1/O+eefz0UXXcTVV1/Nfffdh2VZvPOd7+R973sf9913Hw8//DBf/OIX+fnPf86DDz7IjTfeSC6XY8mSJdx66600Nzdz+eWX09bWxoYNG9i1axdf//rXueiiiwD4+te/zq233oppmpx77rl89atf5ZVXXuGqq65iz549NDc3873vfY/jjz9+1PF3dHSwZMkSdu7cyZFHHsk555xTvO/000/nxz/+cVm/Ks/zePDBB7n99tsBuOyyy/j85z/Pf//v/33U7/nJT37CJZdcAkBzc3PxtVOpFKtWraIrOCH3vffey+c//3kALrroIv72b/8Wz/MwDKOssYmIiExbpcFAgVRqSYFU6iiegTQCf/zjH7njjjvYuHEjjuPQ2dnJ6aefPuQx+/bt4+6772bz5s0YhsH+/fuZOXMma9euLQZWgJkzZ/LhD38YgM9+9rPcfPPNfPSjHwVg586d/O53v2Pz5s2sXbuWiy66iF/96lfcc889PPbYYzQ3N7Nv3z4ArrzySv71X/+VY445hscee4y/+Zu/4cEHHxz1Z3jttdfIZrOceOKJh9x38803c+655wLQ09PDWWedNeJz3H777cydO5eZM2diWf7msXDhQrZv3z7m7+/OO+/k3nvvPeT2/fv382//9m98/OMfB2D79u0ceeSRAFiWRXt7O93d3cyZM2fM5xcREZn2FEilXtSyK3UUz0A6TiWzFh555BHe+9730tzcDMB55513yGPa2trIZDL81V/9Fe9+97s5//zzR3yuZ599ls9+9rPs37+f3t5e3vWudxXvu+CCCzBNk2XLlrF7924AfvOb3/DBD36w+NqzZ8+mt7eX3//+97z//e8vfq9t2yO+3p133slvf/tbNm/ezPXXX08mkxly/49//GM2bNjAww8/DEBraysbN24c9XexZ4QPqrEqmGGQPuGEE4bc7jgOl1xyCR/72Mc4+uijAb/6OpHnFhERkUDpeg6VzCHVqV9kPFplV+oonoE0IuMFI8uyePzxx3nggQf42c9+xvXXXz9ixfLyyy/nnnvuYeXKldxyyy2sX7++eF86nS5eD8PZSC2rrusyc+bMMYNjaN26dVx//fVs2LCBd77znaxdu5Z58+YBftj90pe+xMMPP1x87fEqpEuXLmX//v04joNlWXR1dbFgwYJRX/+OO+4otuuWuvLKKznmmGP4u7/7u+JtCxcuZNu2bSxcuBDHcThw4ACzZ88e92cUERGZ9koDabh6biIx9veoQiqToZZdqSMtahQ4++yzufvuuxkYGKCnp6e4CE+p3t5eDhw4wHnnnce3vvUtnnrqKcCvOPb09BQf19PTw/z588nn89x2223jvvY73/lOvv/979Pf3w/4rcFtbW0sXryYn/70p4AfWsPXG83q1av5r//1v/Ltb38bgCeffJK//uu/5r777mNueFSUwQrpSP+WLVuGYRicc845/OxnPwPghz/8Ie95z3tGfE3XdfnpT3/KxRdfPOT2z372sxw4cIDrrrtuyO1r167lhz/8IQA/+9nPeNvb3qYKqYiISDmGr3hfTlBQIJXJUMuu1JECaWDVqlWsW7eOlStXcu6557Jq1apDHtPT08P555/PiSeeyJlnnsm1114LwMUXX8w3vvENTjrpJF555RW+8IUvcNppp/GWt7xlzEWIQn/+53/O2rVrWb16NZ2dncXTzdx2223cfPPNrFy5kuXLl484R3O4z3zmM/zgBz+gp6eHT33qU/T29vL+97+fzs5O1q5dW/bv42tf+xrXXnstS5Ysobu7myuuuAKA++67j8997nPFx/32t79l4cKFxZZcgK6uLr70pS/x/PPPs2rVKjo7O7npppsAuOKKK+ju7mbJkiVce+21fPWr9W/PFhERaUjDA+kIp2Q7hFp2ZTJUIZU6MryRJvXV2OrVq9mwYcOQ2zZt2sTSpUvrPZRR9fT00NraGvUwpq2ot4f169ezZs2ayF5foqdtQLQNSOy2geefh+XLB7/euxeCMwKM6umnYeVKWLEC/u//hTe/GU45BR5/vLZjnSJitw3Uy+LFEJ4r/gMfgDI6/qaqabsNVMFImW8kqpCKiIiINILJtOyG36OWXZkILWokdaRAKiIiItIINIdU6kUtu1JHsQqkEXQPSwxpOxARERlBpYG0rQ1SKejrg2AhRZERaVEjqaPYBNJMJkN3d7fCyDTneR7d3d2HnEtVRERk2qs0kBqGqqQyvkJhcue8FZmk2JyHdOHChXR1dbEnJm+Q2WxWoSgimUyGhQsXRj0MERGReKk0kIIfSLdv9wPpUUdVd3wyNZRWR0GBVGouNoE0mUyyePHiqIdRtH79ek46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VdXcRFEmjz32GD/+8Y/ZuHEjt912G4888gif+cxnGBwcJJ/PA3IsWOna29tpb2/niiuuAOCWW27hwIEDcgyoIQ8//DCbNm2ipaUFn8/Hu971Lh5//HE5DtSg6d73co1YW+69915+8pOf8O1vf3s0dMo+UD4SSItcdtlldHV1cezYMbLZLPfddx833nhjtTdLlJnrunzkIx9hx44dfO5znxv9+o033si9994LqAPTTTfdVK1NFGV09913093dzfHjx7nvvvt485vfzLe//W2uvvpqvv/97wPy91/pWltbWbduHS+//DIAv/jFL7jgggvkGFBD1q9fz/79+0kmk7iuO7oPyHGg9kz3vr/xxhv5x3/8R1zXZf/+/dTV1Y0O7RUry0MPPcRXvvIVfvzjHxMKhUa/fuONN3LfffeRyWQ4duwYXV1dXH755VXc0hXEFeM88MAD7tatW92Ojg73S1/6UrU3R1TAr3/9axdwd+/e7V500UXuRRdd5D7wwANub2+v++Y3v9ndsmWL++Y3v9nt6+ur9qaKMvvlL3/pvuMd73Bd13WPHDniXnbZZe7mzZvdW265xU2n01XeOlFOzz77rHvJJZe4u3fvdm+66Sa3v79fjgE15k//9E/dzs5Od+fOne7tt9/uptNpOQ6scLfddpvb2trqmqbprl271v37v//7ad/3juO4d955p9vR0eHu2rXLffrpp6u89WIxTLUPbN682W1vbx+9JvzYxz42+vwvfelLbkdHh7tt2zb3wQcfrOKWryya604xIFoIIYQQQgghhCgzGbIrhBBCCCGEEKIqJJAKIYQQQgghhKgKCaRCCCGEEEIIIapCAqkQQgghhBBCiKqQQCqEEEIIIYQQoiokkAohhBBCCCGEqAoJpEIIIYQQQgghquL/B4+o3GPbH33IAAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<Figure size 1152x576 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import matplotlib as mpl\n",
    "import matplotlib.pyplot as plt\n",
    "titles=['uniform','distance']\n",
    "colors=['g-','b-']\n",
    "plt.figure(figsize=(16,8),facecolor='w')\n",
    "In_x_test = range(len(X_test))\n",
    "plt.plot(In_x_test,y_test,'r-',lw=2,label=u'Gound Truth')\n",
    "plt.plot(In_x_test,uni_knr_y_predict,label=u'%s R2=%.3f'%(titles[0],uni_knr.score(X_test,y_test)))\n",
    "plt.plot(In_x_test,dis_knr_y_predict,label=u'%s R2=%.3f'%(titles[1],dis_knr.score(X_test,y_test)))\n",
    "plt.legend(loc='upper left')\n",
    "plt.grid(True)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 总结\n",
    "可以看出，使用不同的回归方式对预测能否足够准确是有相当大的关系的，在进行回归时，应该尝试尽可能多的回归方式，但是也要注意测试集的划分，避免出现过拟合现象。"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.5.3"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
